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
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);
if (updateStateValueCallbackFunc != nullptr)
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;

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

if (uiData->callbacksPtr != nullptr)
@@ -323,13 +323,7 @@ UI::UI(const uint width, const uint height, const bool automaticallyScaleAndSetA
#ifdef DISTRHO_UI_DEFAULT_HEIGHT
height == 0 ? DISTRHO_UI_DEFAULT_HEIGHT :
#endif
height,
// adjustForScaleFactor
#ifdef DISTRHO_UI_DEFAULT_WIDTH
width == 0
#else
false
#endif
height
)),
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)
{
DISTRHO_SAFE_ASSERT_RETURN(key != nullptr && key[0] != '\0',);
DISTRHO_SAFE_ASSERT_RETURN(value != nullptr,);

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

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

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

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
static void webViewMessageCallback(void* arg, char* msg);
#endif


Loading…
Cancel
Save