diff --git a/source/backend/engine/CarlaEngineJack.cpp b/source/backend/engine/CarlaEngineJack.cpp index 47b93fb12..35241b36d 100644 --- a/source/backend/engine/CarlaEngineJack.cpp +++ b/source/backend/engine/CarlaEngineJack.cpp @@ -1226,11 +1226,14 @@ public: plugin->setEnabled(false); // set new client data - jackbridge_set_thread_init_callback(jackClient, carla_jack_thread_init_callback, nullptr); jackbridge_set_latency_callback(jackClient, carla_jack_latency_callback_plugin, plugin); jackbridge_set_process_callback(jackClient, carla_jack_process_callback_plugin, plugin); jackbridge_on_shutdown(jackClient, carla_jack_shutdown_callback_plugin, plugin); + // NOTE: jack1 locks up here + if (jackbridge_get_version_string() != nullptr) + jackbridge_set_thread_init_callback(jackClient, carla_jack_thread_init_callback, nullptr); + /* The following code is because of a tricky situation. We cannot lock or do jack operations during jack callbacks on jack1. jack2 events are asynchronous. When we close the client jack will trigger unregister-port callbacks, which we handle on a separate thread ASAP.