DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit 252cc15a52a3f34dc7bf21b03100e9c05cc1945b
parent 6f460bced49fb8c749439ba6367aa46d7f311a64
Author: falkTX <falktx@gmail.com>
Date:   Thu, 16 Oct 2014 11:47:30 +0100

Set LV2UI widget as the real plugin UI window view/handle

Diffstat:
Mdgl/src/pugl/pugl_osx.m | 4++--
Mdistrho/src/DistrhoUIInternal.hpp | 7+++++++
Mdistrho/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 @@ -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 @@ -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 @@ -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)