diff --git a/source/backend/engine/CarlaEngineNative.cpp b/source/backend/engine/CarlaEngineNative.cpp index 8f27c7d8f..6129e2254 100644 --- a/source/backend/engine/CarlaEngineNative.cpp +++ b/source/backend/engine/CarlaEngineNative.cpp @@ -705,7 +705,7 @@ protected: { CarlaEngine::callback(action, pluginId, value1, value2, value3, valueStr); - if (action == ENGINE_CALLBACK_IDLE) + if (action == ENGINE_CALLBACK_IDLE && ! pData->aboutToClose) pHost->dispatcher(pHost->handle, NATIVE_HOST_OPCODE_HOST_IDLE, 0, 0, nullptr, 0.0f); } @@ -1517,7 +1517,7 @@ protected: } else { - fUiServer.stopPipeServer(5000); + fUiServer.stopPipeServer(2000); // hide all custom uis for (uint i=0; i < pData->curPluginCount; ++i) @@ -1625,7 +1625,7 @@ protected: break; case CarlaExternalUI::UiHide: pHost->ui_closed(pHost->handle); - fUiServer.stopPipeServer(2000); + fUiServer.stopPipeServer(1000); break; } } diff --git a/source/plugin/carla-vst.cpp b/source/plugin/carla-vst.cpp index 9180ccab2..688e56d19 100644 --- a/source/plugin/carla-vst.cpp +++ b/source/plugin/carla-vst.cpp @@ -729,10 +729,12 @@ static intptr_t vst_dispatcherCallback(AEffect* effect, int32_t opcode, int32_t case effClose: if (VstObject* const obj = vstObjectPtr) { - if (obj->plugin != nullptr) + NativePlugin* const plugin(obj->plugin); + + if (plugin != nullptr) { - delete obj->plugin; obj->plugin = nullptr; + delete plugin; } #if 0