mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-06-18 09:23:55 +02:00
Enable mutual recursion on effGetProgramName()
PG-8X in REAPER has the same mutual recursion limitation the Voxengo plugins had in Renoise, but with `effGetProgramName()` instead of `effGetProgram()`.
This commit is contained in:
@@ -70,6 +70,7 @@ Versioning](https://semver.org/spec/v2.0.0.html).
|
|||||||
- Also fixed _DMG_ VST3 plugins freezing in **REAPER** when restoring multiple
|
- Also fixed _DMG_ VST3 plugins freezing in **REAPER** when restoring multiple
|
||||||
instances of the plugin at once while the FX window is open and the GUI is
|
instances of the plugin at once while the FX window is open and the GUI is
|
||||||
visible.
|
visible.
|
||||||
|
- Fixed the _PG-8X_ VST2 plugin freezing in **REAPER** when loading the plugin.
|
||||||
- Fixed _Voxengo_ VST2 plugins in **Renoise** freezing when loading a project or
|
- Fixed _Voxengo_ VST2 plugins in **Renoise** freezing when loading a project or
|
||||||
when otherwise restoring plugin state.
|
when otherwise restoring plugin state.
|
||||||
- Fixed logging traces in the VST2 audio processing functions causing
|
- Fixed logging traces in the VST2 audio processing functions causing
|
||||||
|
|||||||
@@ -46,6 +46,9 @@ Vst2Bridge* current_bridge_instance = nullptr;
|
|||||||
* recursive mutexes on both functions so `effGetProgram()` _has_ to be
|
* recursive mutexes on both functions so `effGetProgram()` _has_ to be
|
||||||
* called on the same thread that is currently calling
|
* called on the same thread that is currently calling
|
||||||
* `audioMasterUpdateDisplay()`.
|
* `audioMasterUpdateDisplay()`.
|
||||||
|
* NOTE: Similarly, REAPER calls `effProgramName()` in response to
|
||||||
|
* `audioMasterUpdateDisplay()`, and PG-8X also requires that to be called
|
||||||
|
* from the same thread that called `audioMasterUpdateDisplay()`.
|
||||||
*/
|
*/
|
||||||
static const std::set<int> mutually_recursive_callbacks{
|
static const std::set<int> mutually_recursive_callbacks{
|
||||||
audioMasterUpdateDisplay};
|
audioMasterUpdateDisplay};
|
||||||
@@ -61,7 +64,8 @@ static const std::set<int> mutually_recursive_callbacks{
|
|||||||
* just execute the function directly on the calling thread. See above for a
|
* just execute the function directly on the calling thread. See above for a
|
||||||
* list of situations where this may be necessary.
|
* list of situations where this may be necessary.
|
||||||
*/
|
*/
|
||||||
static const std::set<int> safe_mutually_recursive_requests{effGetProgram};
|
static const std::set<int> safe_mutually_recursive_requests{effGetProgram,
|
||||||
|
effGetProgramName};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opcodes that should always be handled on the main thread because they may
|
* Opcodes that should always be handled on the main thread because they may
|
||||||
|
|||||||
Reference in New Issue
Block a user