mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-07 03:50:11 +02:00
Set VST2 SR and block sizes from main thread
This apparently fixes New Sonic Arts' Vice plugin freezing while loading. Hopefully this doesn't cause issues with other plugins. Spotted in https://www.kvraudio.com/forum/viewtopic.php?p=8217647#p8217647.
This commit is contained in:
@@ -29,6 +29,11 @@ Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed _New Sonic Arts' Vice_ plugin freezing when loading the plugin. This
|
||||
happened because the plugin tried to spawn new threads and perform drawing
|
||||
calls when changing the sample rate or block size from the audio thread. We're
|
||||
now doing these things from the main GUI thread, so please let me know if this
|
||||
results in loading issues with any other VST2 plugins.
|
||||
- Fixed the drag-and-drop implementation not sending an `XdndStatus` message on
|
||||
the very first tick. This fixes drag-and-drop from _Samplab_ which has a
|
||||
broken drag-and-drop implementation and only starts the operation after the
|
||||
|
||||
@@ -94,10 +94,15 @@ static const std::unordered_set<int> safe_mutually_recursive_requests{
|
||||
* NOTE: `effSetChunk` and `effGetChunk` should be callable from any thread, but
|
||||
* Algonaut Atlas doesn't restore chunk data unless `effSetChunk` is run
|
||||
* from the GUI thread
|
||||
* NOTE: `effSetSampleRate` and `effSetBlockSize` really shouldn't be here, but
|
||||
* New Sonic Arts' Vice plugin spawns a new thread and calls drawing code
|
||||
* while changing sample rate and block size. We'll need to see if doing
|
||||
* this on the main thread introduces any regressions.
|
||||
*/
|
||||
static const std::unordered_set<int> unsafe_requests{
|
||||
effOpen, effClose, effEditGetRect, effEditOpen, effEditClose,
|
||||
effEditIdle, effEditTop, effMainsChanged, effGetChunk, effSetChunk};
|
||||
effOpen, effClose, effEditGetRect, effEditOpen,
|
||||
effEditClose, effEditIdle, effEditTop, effMainsChanged,
|
||||
effGetChunk, effSetChunk, effSetSampleRate, effSetBlockSize};
|
||||
|
||||
/**
|
||||
* These opcodes from `unsafe_requests` should be run under realtime scheduling
|
||||
|
||||
Reference in New Issue
Block a user