From fd3a21add01b730967ead05dba52a23c5d085a5d Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 8 Jul 2022 12:04:15 +0100 Subject: [PATCH] Fix ildaeil crash when carla side has UI disabled Signed-off-by: falkTX --- carla | 2 +- dpf | 2 +- plugins/Cardinal/src/Ildaeil.cpp | 20 ++++++++++++++------ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/carla b/carla index 33bd1f9..6ee0333 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 33bd1f94b33c53e208bb13d09a567a02976b9f1f +Subproject commit 6ee03336ab0a15dba4da78dbf7413624228c5db5 diff --git a/dpf b/dpf index aa99d51..b9e654c 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit aa99d51731cf915d83abb578c232b89fbad6c231 +Subproject commit b9e654c3d331933dbeae0413246be8dc2bd64a58 diff --git a/plugins/Cardinal/src/Ildaeil.cpp b/plugins/Cardinal/src/Ildaeil.cpp index c6163cc..ea5d674 100644 --- a/plugins/Cardinal/src/Ildaeil.cpp +++ b/plugins/Cardinal/src/Ildaeil.cpp @@ -575,11 +575,6 @@ static void host_ui_custom_data_changed(NativeHostHandle handle, const char* key d_stdout("%s %p %s %s", __FUNCTION__, handle, key, value); } -static void host_ui_closed(NativeHostHandle handle) -{ - d_stdout("%s %p", __FUNCTION__, handle); -} - static const char* host_ui_save_file(NativeHostHandle, bool, const char*, const char*) { return nullptr; @@ -806,6 +801,12 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Runner { setDirty(true); } + void closeUI() noexcept + { + if (fIdleState == kIdleGiveIdleToUI) + fIdleState = kIdleNothing; + } + void openFileFromDSP(bool /* isDir */, const char* const title, const char* /* filter */) { DISTRHO_SAFE_ASSERT_RETURN(idleCallbackActive,); @@ -1083,7 +1084,8 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Runner { break; case kIdleGiveIdleToUI: - module->fCarlaPluginDescriptor->ui_idle(module->fCarlaPluginHandle); + if (module->fCarlaPluginDescriptor->ui_idle != nullptr) + module->fCarlaPluginDescriptor->ui_idle(module->fCarlaPluginHandle); break; case kIdleChangePluginType: @@ -1634,6 +1636,12 @@ static void host_ui_parameter_changed(const NativeHostHandle handle, const uint3 ui->changeParameterFromDSP(index, value); } +static void host_ui_closed(const NativeHostHandle handle) +{ + if (IldaeilWidget* const ui = static_cast(static_cast(handle)->fUI)) + ui->closeUI(); +} + static const char* host_ui_open_file(const NativeHostHandle handle, const bool isDir, const char* const title, const char* const filter) {