From 252cc15a52a3f34dc7bf21b03100e9c05cc1945b Mon Sep 17 00:00:00 2001 From: falkTX Date: Thu, 16 Oct 2014 11:47:55 +0100 Subject: [PATCH] Set LV2UI widget as the real plugin UI window view/handle --- dgl/src/pugl/pugl_osx.m | 4 ++-- distrho/src/DistrhoUIInternal.hpp | 7 +++++++ distrho/src/DistrhoUILV2.cpp | 10 ++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/dgl/src/pugl/pugl_osx.m b/dgl/src/pugl/pugl_osx.m index f15c4fab..d5fa6e2b 100644 --- a/dgl/src/pugl/pugl_osx.m +++ b/dgl/src/pugl/pugl_osx.m @@ -494,8 +494,7 @@ puglDestroy(PuglView* view) PuglStatus puglProcessEvents(PuglView* view) { - [view->impl->glview setNeedsDisplay: YES]; - + view->redisplay = false; return PUGL_SUCCESS; } @@ -503,6 +502,7 @@ void puglPostRedisplay(PuglView* view) { view->redisplay = true; + [view->impl->glview setNeedsDisplay:YES]; } PuglNativeWindow diff --git a/distrho/src/DistrhoUIInternal.hpp b/distrho/src/DistrhoUIInternal.hpp index 6bd421c0..14b2fdd4 100644 --- a/distrho/src/DistrhoUIInternal.hpp +++ b/distrho/src/DistrhoUIInternal.hpp @@ -254,6 +254,13 @@ public: // ------------------------------------------------------------------- + intptr_t getWindowId() const noexcept + { + return glWindow.getWindowId(); + } + + // ------------------------------------------------------------------- + uint32_t getParameterOffset() const noexcept { DISTRHO_SAFE_ASSERT_RETURN(fData != nullptr, 0); diff --git a/distrho/src/DistrhoUILV2.cpp b/distrho/src/DistrhoUILV2.cpp index 749652e4..81a593a6 100644 --- a/distrho/src/DistrhoUILV2.cpp +++ b/distrho/src/DistrhoUILV2.cpp @@ -37,7 +37,8 @@ class UiLv2 public: UiLv2(const intptr_t winId, const LV2_Options_Option* options, const LV2_URID_Map* const uridMap, const LV2UI_Resize* const uiResz, const LV2UI_Touch* uiTouch, - const LV2UI_Controller controller, const LV2UI_Write_Function writeFunc, void* const dspPtr) + const LV2UI_Controller controller, const LV2UI_Write_Function writeFunc, + LV2UI_Widget* const widget, void* const dspPtr) : fUI(this, winId, editParameterCallback, setParameterCallback, setStateCallback, sendNoteCallback, setSizeCallback, dspPtr), fUridMap(uridMap), fUiResize(uiResz), @@ -51,6 +52,9 @@ public: if (fUiResize != nullptr && winId != 0) fUiResize->ui_resize(fUiResize->handle, fUI.getWidth(), fUI.getHeight()); + if (widget != nullptr) + *widget = (LV2UI_Widget*)fUI.getWindowId(); + #if DISTRHO_PLUGIN_WANT_STATE // tell the DSP we're ready to receive msgs setState("__dpf_ui_data__", ""); @@ -391,8 +395,6 @@ static LV2UI_Handle lv2ui_instantiate(const LV2UI_Descriptor*, const char* uri, } #endif - *widget = parentId; - const intptr_t winId((intptr_t)parentId); if (options != nullptr) @@ -419,7 +421,7 @@ static LV2UI_Handle lv2ui_instantiate(const LV2UI_Descriptor*, const char* uri, d_lastUiSampleRate = 44100.0; } - return new UiLv2(winId, options, uridMap, uiResize, uiTouch, controller, writeFunction, instance); + return new UiLv2(winId, options, uridMap, uiResize, uiTouch, controller, writeFunction, widget, instance); } #define uiPtr ((UiLv2*)ui)