diff --git a/dgl/Window.hpp b/dgl/Window.hpp index 93bf1eb8..b6929c59 100644 --- a/dgl/Window.hpp +++ b/dgl/Window.hpp @@ -362,6 +362,9 @@ public: DISTRHO_DEPRECATED_BY("runAsModal(bool)") inline void exec(bool blockWait = false) { runAsModal(blockWait); } + // TESTING, DO NOT USE + void leaveContext(); + protected: /** A function called when the window is attempted to be closed. diff --git a/dgl/src/Window.cpp b/dgl/src/Window.cpp index 7eefa63b..0d2fa5db 100644 --- a/dgl/src/Window.cpp +++ b/dgl/src/Window.cpp @@ -265,6 +265,11 @@ void Window::runAsModal(bool blockWait) pData->runAsModal(blockWait); } +void Window::leaveContext() +{ + pData->leaveContext(); +} + void Window::setGeometryConstraints(const uint minimumWidth, const uint minimumHeight, const bool keepAspectRatio, diff --git a/dgl/src/WindowPrivateData.cpp b/dgl/src/WindowPrivateData.cpp index 17fc1861..f0ef1e10 100644 --- a/dgl/src/WindowPrivateData.cpp +++ b/dgl/src/WindowPrivateData.cpp @@ -617,6 +617,14 @@ void Window::PrivateData::runAsModal(const bool blockWait) } } +// ----------------------------------------------------------------------- +// TESTING + +void Window::PrivateData::leaveContext() +{ + puglBackendLeave(view); +} + // ----------------------------------------------------------------------- // pugl events diff --git a/dgl/src/WindowPrivateData.hpp b/dgl/src/WindowPrivateData.hpp index b3fd194d..ac63ba34 100644 --- a/dgl/src/WindowPrivateData.hpp +++ b/dgl/src/WindowPrivateData.hpp @@ -158,6 +158,9 @@ struct Window::PrivateData : IdleCallback { void stopModal(); void runAsModal(bool blockWait); + // TESTING + void leaveContext(); + // pugl events void onPuglConfigure(double width, double height); void onPuglExpose(); diff --git a/dgl/src/pugl-upstream b/dgl/src/pugl-upstream index a940bf9e..37727dd4 160000 --- a/dgl/src/pugl-upstream +++ b/dgl/src/pugl-upstream @@ -1 +1 @@ -Subproject commit a940bf9e524da9eacf57a465ca00dc35d8236480 +Subproject commit 37727dd4e2b141fcf106c3c8e1076376d9025916 diff --git a/dgl/src/pugl.cpp b/dgl/src/pugl.cpp index 251d5bb2..91006dab 100644 --- a/dgl/src/pugl.cpp +++ b/dgl/src/pugl.cpp @@ -160,6 +160,14 @@ void puglBackendEnter(PuglView* const view) view->backend->enter(view, NULL); } +// -------------------------------------------------------------------------------------------------------------------- +// expose backend leave + +void puglBackendLeave(PuglView* const view) +{ + view->backend->leave(view, NULL); +} + // -------------------------------------------------------------------------------------------------------------------- // clear minimum size to 0 diff --git a/dgl/src/pugl.hpp b/dgl/src/pugl.hpp index 6c98d54c..4dc76bae 100644 --- a/dgl/src/pugl.hpp +++ b/dgl/src/pugl.hpp @@ -46,6 +46,10 @@ PUGL_BEGIN_DECLS PUGL_API void puglBackendEnter(PuglView* view); +// expose backend leave +PUGL_API void +puglBackendLeave(PuglView* view); + // clear minimum size to 0 PUGL_API void puglClearMinSize(PuglView* view); diff --git a/distrho/src/DistrhoUIInternal.hpp b/distrho/src/DistrhoUIInternal.hpp index f2f95017..3a1234b8 100644 --- a/distrho/src/DistrhoUIInternal.hpp +++ b/distrho/src/DistrhoUIInternal.hpp @@ -96,6 +96,8 @@ public: g_nextWindowId = 0; g_nextScaleFactor = 0.0; g_nextBundlePath = nullptr; +#else + uiData->window->leaveContext(); #endif UI::PrivateData::s_nextPrivateData = nullptr;