Skip to content

Commit

Permalink
Enable mutual recursion on effGetProgramName()
Browse files Browse the repository at this point in the history
PG-8X in REAPER has the same mutual recursion limitation the Voxengo
plugins had in Renoise, but with `effGetProgramName()` instead of
`effGetProgram()`.
  • Loading branch information
robbert-vdh committed May 23, 2021
1 parent ac4957a commit d610c07
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -70,6 +70,7 @@ Versioning](https://semver.org/spec/v2.0.0.html).
- 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
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
when otherwise restoring plugin state.
- Fixed logging traces in the VST2 audio processing functions causing
Expand Down
6 changes: 5 additions & 1 deletion src/wine-host/bridges/vst2.cpp
Expand Up @@ -46,6 +46,9 @@ Vst2Bridge* current_bridge_instance = nullptr;
* recursive mutexes on both functions so `effGetProgram()` _has_ to be
* called on the same thread that is currently calling
* `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{
audioMasterUpdateDisplay};
Expand All @@ -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
* 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
Expand Down

0 comments on commit d610c07

Please sign in to comment.