Browse Source

Verify plugin provided pointers, always use UI scaled size

Signed-off-by: falkTX <falktx@falktx.com>
pull/457/head
falkTX 1 year ago
parent
commit
d49a13f2c4
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
3 changed files with 13 additions and 11 deletions
  1. +3
    -0
      distrho/src/DistrhoPluginInternal.hpp
  2. +4
    -10
      distrho/src/DistrhoUI.cpp
  3. +6
    -1
      distrho/src/DistrhoUIPrivateData.hpp

+ 3
- 0
distrho/src/DistrhoPluginInternal.hpp View File

@@ -309,6 +309,9 @@ struct Plugin::PrivateData {
#if DISTRHO_PLUGIN_WANT_STATE #if DISTRHO_PLUGIN_WANT_STATE
bool updateStateValueCallback(const char* const key, const char* const value) bool updateStateValueCallback(const char* const key, const char* const value)
{ {
DISTRHO_SAFE_ASSERT_RETURN(key != nullptr && key[0] != '\0', false);
DISTRHO_SAFE_ASSERT_RETURN(value != nullptr, false);

d_stdout("updateStateValueCallback %p", updateStateValueCallbackFunc); d_stdout("updateStateValueCallback %p", updateStateValueCallbackFunc);
if (updateStateValueCallbackFunc != nullptr) if (updateStateValueCallbackFunc != nullptr)
return updateStateValueCallbackFunc(callbacksPtr, key, value); return updateStateValueCallbackFunc(callbacksPtr, key, value);


+ 4
- 10
distrho/src/DistrhoUI.cpp View File

@@ -171,18 +171,18 @@ static double getDesktopScaleFactor(const uintptr_t parentWindowHandle)


UI::PrivateData* UI::PrivateData::s_nextPrivateData = nullptr; UI::PrivateData* UI::PrivateData::s_nextPrivateData = nullptr;


PluginWindow& UI::PrivateData::createNextWindow(UI* const ui, uint width, uint height, const bool adjustForScaleFactor)
PluginWindow& UI::PrivateData::createNextWindow(UI* const ui, uint width, uint height)
{ {
UI::PrivateData* const uiData = s_nextPrivateData; UI::PrivateData* const uiData = s_nextPrivateData;
const double scaleFactor = d_isNotZero(uiData->scaleFactor) ? uiData->scaleFactor : getDesktopScaleFactor(uiData->winId); const double scaleFactor = d_isNotZero(uiData->scaleFactor) ? uiData->scaleFactor : getDesktopScaleFactor(uiData->winId);


if (adjustForScaleFactor && d_isNotZero(scaleFactor) && d_isNotEqual(scaleFactor, 1.0))
if (d_isNotZero(scaleFactor) && d_isNotEqual(scaleFactor, 1.0))
{ {
width *= scaleFactor; width *= scaleFactor;
height *= scaleFactor; height *= scaleFactor;
} }


d_stdout("createNextWindow %u %u %f %d", width, height, scaleFactor, adjustForScaleFactor);
d_stdout("createNextWindow %u %u %d", width, height, scaleFactor);
uiData->window = new PluginWindow(ui, uiData->app, uiData->winId, width, height, scaleFactor); uiData->window = new PluginWindow(ui, uiData->app, uiData->winId, width, height, scaleFactor);


if (uiData->callbacksPtr != nullptr) if (uiData->callbacksPtr != nullptr)
@@ -323,13 +323,7 @@ UI::UI(const uint width, const uint height, const bool automaticallyScaleAndSetA
#ifdef DISTRHO_UI_DEFAULT_HEIGHT #ifdef DISTRHO_UI_DEFAULT_HEIGHT
height == 0 ? DISTRHO_UI_DEFAULT_HEIGHT : height == 0 ? DISTRHO_UI_DEFAULT_HEIGHT :
#endif #endif
height,
// adjustForScaleFactor
#ifdef DISTRHO_UI_DEFAULT_WIDTH
width == 0
#else
false
#endif
height
)), )),
uiData(UI::PrivateData::s_nextPrivateData) uiData(UI::PrivateData::s_nextPrivateData)
{ {


+ 6
- 1
distrho/src/DistrhoUIPrivateData.hpp View File

@@ -352,6 +352,9 @@ struct UI::PrivateData {


void setStateCallback(const char* const key, const char* const value) void setStateCallback(const char* const key, const char* const value)
{ {
DISTRHO_SAFE_ASSERT_RETURN(key != nullptr && key[0] != '\0',);
DISTRHO_SAFE_ASSERT_RETURN(value != nullptr,);

if (setStateCallbackFunc != nullptr) if (setStateCallbackFunc != nullptr)
setStateCallbackFunc(callbacksPtr, key, value); setStateCallbackFunc(callbacksPtr, key, value);
} }
@@ -364,6 +367,8 @@ struct UI::PrivateData {


void setSizeCallback(const uint width, const uint height) void setSizeCallback(const uint width, const uint height)
{ {
DISTRHO_SAFE_ASSERT_RETURN(width != 0 && height != 0,);

if (setSizeCallbackFunc != nullptr) if (setSizeCallbackFunc != nullptr)
setSizeCallbackFunc(callbacksPtr, width, height); setSizeCallbackFunc(callbacksPtr, width, height);
} }
@@ -372,7 +377,7 @@ struct UI::PrivateData {
bool fileRequestCallback(const char* key); bool fileRequestCallback(const char* key);


static UI::PrivateData* s_nextPrivateData; static UI::PrivateData* s_nextPrivateData;
static PluginWindow& createNextWindow(UI* ui, uint width, uint height, bool adjustForScaleFactor);
static PluginWindow& createNextWindow(UI* ui, uint width, uint height);
#if DISTRHO_UI_USE_WEB_VIEW #if DISTRHO_UI_USE_WEB_VIEW
static void webViewMessageCallback(void* arg, char* msg); static void webViewMessageCallback(void* arg, char* msg);
#endif #endif


Loading…
Cancel
Save