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(); } };