Browse Source

More cleanup, hardcode fix broken offset in renoise redux

Signed-off-by: falkTX <falktx@falktx.com>
main
falkTX 1 year ago
parent
commit
10c9089d26
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
6 changed files with 66 additions and 22 deletions
  1. +1
    -1
      carla
  2. +1
    -0
      plugins/Common/IldaeilBasePlugin.hpp
  3. +6
    -2
      plugins/Common/IldaeilPlugin.cpp
  4. +25
    -1
      plugins/Common/IldaeilUI.cpp
  5. +32
    -18
      plugins/Common/PluginHostWindow.cpp
  6. +1
    -0
      plugins/Common/PluginHostWindow.hpp

+ 1
- 1
carla

@@ -1 +1 @@
Subproject commit 862c1ec129111f25a3af972851f8adb0a102b521
Subproject commit 0032f18fad01806c512f1e12804d8c7adffb4e8a

+ 1
- 0
plugins/Common/IldaeilBasePlugin.hpp View File

@@ -61,6 +61,7 @@ public:
const char* ildaeilConfigDir();
void ildaeilProjectLoadedFromDSP(void* ui);
void ildaeilParameterChangeForUI(void* ui, uint32_t index, float value);
void ildaeilResizeUI(void* ui, uint32_t width, uint32_t height);
void ildaeilCloseUI(void* ui);
const char* ildaeilOpenFileForUI(void* ui, bool isDir, const char* title, const char* filter);



+ 6
- 2
plugins/Common/IldaeilPlugin.cpp View File

@@ -18,6 +18,7 @@
#include "IldaeilBasePlugin.hpp"
#include "DistrhoPluginUtils.hpp"
#include "CarlaBackendUtils.hpp"
#include "CarlaEngine.hpp"
#include "water/files/File.h"
#include "water/streams/MemoryOutputStream.h"
@@ -535,10 +536,13 @@ public:
case NATIVE_HOST_OPCODE_UI_TOUCH_PARAMETER:
case NATIVE_HOST_OPCODE_REQUEST_IDLE:
case NATIVE_HOST_OPCODE_GET_FILE_PATH:
case NATIVE_HOST_OPCODE_UI_RESIZE:
case NATIVE_HOST_OPCODE_PREVIEW_BUFFER_DATA:
// TESTING
d_stdout("dispatcher %i, %i, %li, %p, %f", opcode, index, value, ptr, opt);
d_stdout("dispatcher %i:%s, %i, %li, %p, %f",
opcode, NativeHostDispatcherOpcode2Str(opcode), index, value, ptr, opt);
break;
case NATIVE_HOST_OPCODE_UI_RESIZE:
ildaeilResizeUI(fUI, index, value);
break;
}


+ 25
- 1
plugins/Common/IldaeilUI.cpp View File

@@ -382,6 +382,11 @@ public:
repaint();
}

void resizeUI(uint32_t, uint32_t)
{
// unused for now
}

void closeUI()
{
if (fIdleState == kIdleGiveIdleToUI)
@@ -416,6 +421,7 @@ public:

fPluginHostWindow.restart();
carla_embed_custom_ui(handle, fPluginId, fNativeWindowHandle);
fPluginHostWindow.idle();
}
else
#endif
@@ -610,9 +616,20 @@ public:

if (ok)
{
d_debug("loadeded a plugin with label '%s' and name '%s' %lu",
info.name.c_str(), info.label.c_str(), info.uniqueId);

fPluginRunning = true;
fPluginGenericUI = nullptr;
fPluginFilename.clear();

#ifdef DISTRHO_OS_MAC
const bool brokenOffset = fPluginType == PLUGIN_VST2
&& info.name == "Renoise Redux"
&& info.uniqueId == d_cconst('R', 'R', 'D', 'X');
fPluginHostWindow.setOffsetBroken(brokenOffset);
#endif

showPluginUI(handle, false);

#ifdef WASM_TESTING
@@ -1777,7 +1794,14 @@ void ildaeilParameterChangeForUI(void* const ui, const uint32_t index, const flo
static_cast<IldaeilUI*>(ui)->changeParameterFromDSP(index, value);
}

void ildaeilCloseUI(void* ui)
void ildaeilResizeUI(void* const ui, const uint32_t width, const uint32_t height)
{
DISTRHO_SAFE_ASSERT_RETURN(ui != nullptr,);

static_cast<IldaeilUI*>(ui)->resizeUI(width, height);
}

void ildaeilCloseUI(void* const ui)
{
DISTRHO_SAFE_ASSERT_RETURN(ui != nullptr,);



+ 32
- 18
plugins/Common/PluginHostWindow.cpp View File

@@ -66,6 +66,7 @@ struct PluginHostWindow::PrivateData
#endif
uint xOffset, yOffset;

bool brokenOffsetFactor;
bool lookingForChildren;

PrivateData(void* const wh, Callbacks* const cbs)
@@ -83,6 +84,7 @@ struct PluginHostWindow::PrivateData
#endif
xOffset(0),
yOffset(0),
brokenOffsetFactor(false),
lookingForChildren(false)
{
#if defined(DISTRHO_OS_HAIKU)
@@ -118,6 +120,9 @@ struct PluginHostWindow::PrivateData
pluginWindow = nullptr;
#else
pluginWindow = 0;

for (XEvent event; XPending(display) > 0;)
XNextEvent(display, &event);
#endif
}

@@ -156,8 +161,8 @@ struct PluginHostWindow::PrivateData
{
if (lookingForChildren)
{
#if defined(DISTRHO_OS_HAIKU)
#elif defined(DISTRHO_OS_MAC)
#if defined(DISTRHO_OS_HAIKU)
#elif defined(DISTRHO_OS_MAC)
if (pluginView == nullptr)
{
bool first = true;
@@ -172,15 +177,12 @@ struct PluginHostWindow::PrivateData
break;
}
}
#elif defined(DISTRHO_OS_WASM)
#elif defined(DISTRHO_OS_WINDOWS)
#elif defined(DISTRHO_OS_WASM)
#elif defined(DISTRHO_OS_WINDOWS)
if (pluginWindow == nullptr)
pluginWindow = FindWindowExA((::HWND)windowHandle, nullptr, nullptr, nullptr);
#else
if (display == nullptr)
return;

if (pluginWindow == 0)
#else
if (display != nullptr && pluginWindow == 0)
{
::Window rootWindow, parentWindow;
::Window* childWindows = nullptr;
@@ -196,11 +198,11 @@ struct PluginHostWindow::PrivateData
XFree(childWindows);
}
}
#endif
#endif
}

#if defined(DISTRHO_OS_HAIKU)
#elif defined(DISTRHO_OS_MAC)
#if defined(DISTRHO_OS_HAIKU)
#elif defined(DISTRHO_OS_MAC)
if (pluginView != nullptr)
{
const double scaleFactor = [[[pluginView window] screen] backingScaleFactor];
@@ -213,14 +215,16 @@ struct PluginHostWindow::PrivateData

if (width > 1.0 && height > 1.0)
{
NSPoint origin = brokenOffsetFactor ? NSMakePoint(xOffset, yOffset)
: NSMakePoint(xOffset / scaleFactor, yOffset / scaleFactor);

lookingForChildren = false;
[pluginView setFrameOrigin:NSMakePoint(xOffset / scaleFactor, yOffset / scaleFactor)];
[pluginView setNeedsDisplay:YES];
[pluginView setFrameOrigin:origin];
pluginWindowCallbacks->pluginWindowResized(width * scaleFactor, height * scaleFactor);
}
}
#elif defined(DISTRHO_OS_WASM)
#elif defined(DISTRHO_OS_WINDOWS)
#elif defined(DISTRHO_OS_WASM)
#elif defined(DISTRHO_OS_WINDOWS)
if (pluginWindow != nullptr)
{
int width = 0;
@@ -244,7 +248,7 @@ struct PluginHostWindow::PrivateData
pluginWindowCallbacks->pluginWindowResized(width, height);
}
}
#else
#else
for (XEvent event; XPending(display) > 0;)
XNextEvent(display, &event);

@@ -300,7 +304,7 @@ struct PluginHostWindow::PrivateData
pluginWindowCallbacks->pluginWindowResized(width, height);
}
}
#endif
#endif
}

void setOffset(const uint x, const uint y)
@@ -309,6 +313,11 @@ struct PluginHostWindow::PrivateData
yOffset = y;
}

void setOffsetBroken(const bool broken)
{
brokenOffsetFactor = broken;
}

void setSize(const uint width, const uint height)
{
#if defined(DISTRHO_OS_HAIKU)
@@ -355,6 +364,11 @@ void PluginHostWindow::setOffset(const uint x, const uint y)
pData->setOffset(x, y);
}

void PluginHostWindow::setOffsetBroken(bool brokenOffsetFactor)
{
pData->setOffsetBroken(brokenOffsetFactor);
}

void PluginHostWindow::setSize(const uint width, const uint height)
{
pData->setSize(width, height);


+ 1
- 0
plugins/Common/PluginHostWindow.hpp View File

@@ -39,6 +39,7 @@ public:
bool hide();
void idle();
void setOffset(uint x, uint y);
void setOffsetBroken(bool brokenOffsetFactor);
void setSize(uint width, uint height);
};



Loading…
Cancel
Save