diff --git a/c++/carla-backend/carla_bridge.cpp b/c++/carla-backend/carla_bridge.cpp index 1e6b25a..a9898cf 100644 --- a/c++/carla-backend/carla_bridge.cpp +++ b/c++/carla-backend/carla_bridge.cpp @@ -955,7 +955,7 @@ public: x_engine->__bridgePluginRegister(m_id, nullptr); osc.thread->terminate(); - setLastError("Timeout while waiting for a response from plugin-bridge"); + setLastError("Timeout while waiting for a response from plugin-bridge\n(or the plugin crashed on initialization?)"); return false; } else if (m_initError) diff --git a/c++/carla-backend/vst.cpp b/c++/carla-backend/vst.cpp index 4b5c46d..2bba2f0 100644 --- a/c++/carla-backend/vst.cpp +++ b/c++/carla-backend/vst.cpp @@ -1732,12 +1732,20 @@ public: self = nullptr; } -#ifdef DEBUG if (self) + { + if (! self->effect) + self->effect = effect; + Q_ASSERT(self->effect == effect); -#endif - if (lastVstPlugin && ! self) + if (self->effect != effect) + { + qWarning("VstPlugin::hostCallback() - host pointer mismatch: %p != %p", self->effect, effect); + self = nullptr; + } + } + else if (lastVstPlugin) { #ifdef VESTIGE_HEADER effect->ptr1 = lastVstPlugin; @@ -1896,7 +1904,9 @@ public: case audioMasterGetSampleRate: Q_ASSERT(self); if (self) + { ret = self->handleAudioMasterGetSampleRate(); + } else { qWarning("VstPlugin::hostCallback::audioMasterGetSampleRate called without valid object"); @@ -1907,7 +1917,9 @@ public: case audioMasterGetBlockSize: Q_ASSERT(self); if (self) + { ret = self->handleAudioMasterGetBlockSize(); + } else { qWarning("stPlugin::hostCallback::audioMasterGetBlockSize called without valid object");