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:
Robbert van der Helm
2021-05-23 19:00:16 +02:00
parent ac4957a29b
commit d610c07e11
2 changed files with 6 additions and 1 deletions
+1
View File
@@ -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
+5 -1
View File
@@ -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