From 46af2ce8ad7a251ef027ec8a66dcf4f7b48cbef9 Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 19 Sep 2012 23:46:30 +0100 Subject: [PATCH] Carla: Vst callback minor fixing --- c++/carla-backend/carla_bridge.cpp | 2 +- c++/carla-backend/vst.cpp | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) 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");