VST3: handle offline FX processing callbacks
This fixes potential deadlocks, when not using rt process threads.
This commit is contained in:
parent
3f1486fa12
commit
558e32e639
@ -1676,7 +1676,7 @@ VST3PI::restartComponent (int32 flags)
|
||||
|
||||
if (flags & Vst::kReloadComponent) {
|
||||
Glib::Threads::Mutex::Lock pl (_process_lock, Glib::Threads::NOT_LOCK);
|
||||
if (!AudioEngine::instance ()->in_process_thread () && !_is_loading_state && !_restart_component_is_synced) {
|
||||
if (!AudioEngine::instance ()->in_process_thread () && !_is_loading_state && !_restart_component_is_synced && !_process_offline) {
|
||||
pl.acquire ();
|
||||
} else {
|
||||
assert (0); // a plugin should not call this while processing
|
||||
@ -1694,7 +1694,7 @@ VST3PI::restartComponent (int32 flags)
|
||||
}
|
||||
if (flags & Vst::kParamValuesChanged) {
|
||||
Glib::Threads::Mutex::Lock pl (_process_lock, Glib::Threads::NOT_LOCK);
|
||||
if (!AudioEngine::instance ()->in_process_thread () && !_is_loading_state && !_restart_component_is_synced) {
|
||||
if (!AudioEngine::instance ()->in_process_thread () && !_is_loading_state && !_restart_component_is_synced && !_process_offline) {
|
||||
pl.acquire ();
|
||||
}
|
||||
update_shadow_data ();
|
||||
@ -1709,7 +1709,7 @@ VST3PI::restartComponent (int32 flags)
|
||||
* changes are automatically picked up.
|
||||
*/
|
||||
Glib::Threads::Mutex::Lock pl (_process_lock, Glib::Threads::NOT_LOCK);
|
||||
if (!AudioEngine::instance ()->in_process_thread () && !_is_loading_state && !_restart_component_is_synced) {
|
||||
if (!AudioEngine::instance ()->in_process_thread () && !_is_loading_state && !_restart_component_is_synced && !_process_offline) {
|
||||
/* Some plugins (e.g BlendEQ) call this from the process,
|
||||
* IPlugProcessor::ProcessBuffers. In that case taking the
|
||||
* _process_lock would deadlock.
|
||||
|
Loading…
Reference in New Issue
Block a user