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:
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)