diff --git a/distrho/extra/ExternalWindow.hpp b/distrho/extra/ExternalWindow.hpp index 1e5867bd..48a05948 100644 --- a/distrho/extra/ExternalWindow.hpp +++ b/distrho/extra/ExternalWindow.hpp @@ -79,10 +79,7 @@ public: virtual bool isQuitting() const { - if (ext.inUse) - return ext.isQuitting; - - return !isVisible(); + return ext.inUse ? ext.isQuitting : pData.isQuitting; } /** @@ -90,6 +87,7 @@ public: */ virtual void close() { + pData.isQuitting = true; hide(); if (ext.inUse) @@ -436,6 +434,7 @@ private: uint height; double scaleFactor; String title; + bool isQuitting; bool visible; PrivateData() @@ -445,6 +444,7 @@ private: height(1), scaleFactor(1.0), title(), + isQuitting(false), visible(false) {} } pData; diff --git a/examples/EmbedExternalUI/EmbedExternalExampleUI.cpp b/examples/EmbedExternalUI/EmbedExternalExampleUI.cpp index b1ae6554..616f7f47 100644 --- a/examples/EmbedExternalUI/EmbedExternalExampleUI.cpp +++ b/examples/EmbedExternalUI/EmbedExternalExampleUI.cpp @@ -125,6 +125,16 @@ protected: /* -------------------------------------------------------------------------------------------------------- * External Window overrides */ + uintptr_t getNativeWindowHandle() const noexcept override + { +#if defined(DISTRHO_OS_MAC) +#elif defined(DISTRHO_OS_WINDOWS) +#else + return (uintptr_t)fWindow; +#endif + return 0; + } + void titleChanged(const char* const title) override { d_stdout("visibilityChanged %s", title);