From e4c04c507468aece305c7f96832aca75d07f941c Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 19 Mar 2022 20:48:19 +0000 Subject: [PATCH] Alternative way to deal with resizes in jucewrapper Signed-off-by: falkTX --- jucewrapper/CardinalWrapper.cpp | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/jucewrapper/CardinalWrapper.cpp b/jucewrapper/CardinalWrapper.cpp index d093389..15561c2 100644 --- a/jucewrapper/CardinalWrapper.cpp +++ b/jucewrapper/CardinalWrapper.cpp @@ -525,6 +525,7 @@ static constexpr const fileRequestFunc nullFileRequestFunc = nullptr; // UI/editor implementation class CardinalWrapperEditor : public juce::AudioProcessorEditor, + private juce::AsyncUpdater, private juce::Timer { CardinalWrapperProcessor& cardinalProcessor; @@ -554,6 +555,22 @@ public: } protected: + void handleAsyncUpdate() override + { + DISTRHO_SAFE_ASSERT_RETURN(ui != nullptr,); + + int width = static_cast(ui->getWidth()); + int height = static_cast(ui->getHeight()); + + #ifdef DISTRHO_OS_MAC + const double scaleFactor = ui->getScaleFactor(); + width /= scaleFactor; + height /= scaleFactor; + #endif + + setSize(width, height); + } + void timerCallback() override { if (ui == nullptr) @@ -639,21 +656,12 @@ private: cardinalProcessor.plugin.setState(key, value); } - static void setSizeFunc(void* const ptr, uint width, uint height) + static void setSizeFunc(void* const ptr, uint, uint) { CardinalWrapperEditor* const editor = static_cast(ptr); DISTRHO_SAFE_ASSERT_RETURN(editor != nullptr,); - #ifdef DISTRHO_OS_MAC - UIExporter* const ui = editor->ui; - DISTRHO_SAFE_ASSERT_RETURN(ui != nullptr,); - - const double scaleFactor = ui->getScaleFactor(); - width /= scaleFactor; - height /= scaleFactor; - #endif - - editor->setSize(static_cast(width), static_cast(height)); + editor->triggerAsyncUpdate(); } };