Skip to content

Commit

Permalink
Verify plugin provided pointers, always use UI scaled size
Browse files Browse the repository at this point in the history
Signed-off-by: falkTX <[email protected]>
  • Loading branch information
falkTX committed May 23, 2024
1 parent 8ac24f8 commit d49a13f
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 11 deletions.
3 changes: 3 additions & 0 deletions distrho/src/DistrhoPluginInternal.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
14 changes: 4 additions & 10 deletions distrho/src/DistrhoUI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
{
Expand Down
7 changes: 6 additions & 1 deletion distrho/src/DistrhoUIPrivateData.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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);
}
Expand All @@ -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
Expand Down

0 comments on commit d49a13f

Please sign in to comment.