Browse Source

More cleanup

tags/v0.9.0
falkTX 12 years ago
parent
commit
16de0cef40
9 changed files with 181 additions and 123 deletions
  1. +42
    -28
      c++/carla-bridge/carla_bridge_client.cpp
  2. +5
    -7
      c++/carla-bridge/carla_bridge_client.hpp
  3. +35
    -37
      c++/carla-bridge/carla_bridge_osc.cpp
  4. +7
    -1
      c++/carla-bridge/carla_bridge_osc.hpp
  5. +54
    -26
      c++/carla-bridge/carla_bridge_toolkit-gtk.cpp
  6. +27
    -20
      c++/carla-bridge/carla_bridge_toolkit-qt.cpp
  7. +1
    -1
      c++/carla-bridge/carla_bridge_toolkit.cpp
  8. +3
    -3
      c++/carla-bridge/carla_bridge_ui-lv2.cpp
  9. +7
    -0
      c++/carla-utils/carla_osc_utils.hpp

+ 42
- 28
c++/carla-bridge/carla_bridge_client.cpp View File

@@ -18,16 +18,12 @@
#include "carla_bridge_client.hpp" #include "carla_bridge_client.hpp"
#include "carla_bridge_toolkit.hpp" #include "carla_bridge_toolkit.hpp"


#ifdef BUILD_BRIDGE_PLUGIN
# include "carla_engine.hpp"
#else
#ifdef BUILD_BRIDGE_UI
# include "carla_lib_utils.hpp" # include "carla_lib_utils.hpp"
#endif #endif


#include <cmath>
#include <cstdio>
#include <cstdint>
#include <cstdlib> #include <cstdlib>
#include <cstring>


CARLA_BRIDGE_START_NAMESPACE CARLA_BRIDGE_START_NAMESPACE


@@ -46,8 +42,6 @@ CarlaBridgeClient::CarlaBridgeClient(const char* const uiTitle)
m_uiLib = nullptr; m_uiLib = nullptr;
m_uiQuit = false; m_uiQuit = false;
#endif #endif

m_toolkit->init();
} }


CarlaBridgeClient::~CarlaBridgeClient() CarlaBridgeClient::~CarlaBridgeClient()
@@ -58,6 +52,8 @@ CarlaBridgeClient::~CarlaBridgeClient()
if (m_uiFilename) if (m_uiFilename)
free(m_uiFilename); free(m_uiFilename);
#endif #endif

delete m_toolkit;
} }


#ifdef BUILD_BRIDGE_UI #ifdef BUILD_BRIDGE_UI
@@ -68,7 +64,17 @@ bool CarlaBridgeClient::init(const char* const, const char* const)
{ {
qDebug("CarlaBridgeClient::init()"); qDebug("CarlaBridgeClient::init()");


// Test for single init
{
static bool initiated = false;
CARLA_ASSERT(! initiated);
initiated = true;
}

m_uiQuit = false; m_uiQuit = false;

m_toolkit->init();

return false; return false;
} }


@@ -95,7 +101,7 @@ bool CarlaBridgeClient::oscInit(const char* const url)
{ {
qDebug("CarlaBridgeClient::oscInit(\"%s\")", url); qDebug("CarlaBridgeClient::oscInit(\"%s\")", url);


bool ret = m_osc.init(url);
const bool ret = m_osc.init(url);
m_oscData = m_osc.getControlData(); m_oscData = m_osc.getControlData();


return ret; return ret;
@@ -103,7 +109,7 @@ bool CarlaBridgeClient::oscInit(const char* const url)


bool CarlaBridgeClient::oscIdle() bool CarlaBridgeClient::oscIdle()
{ {
m_osc .idle();
m_osc.idle();


#ifdef BUILD_BRIDGE_UI #ifdef BUILD_BRIDGE_UI
return ! m_uiQuit; return ! m_uiQuit;
@@ -136,6 +142,15 @@ void CarlaBridgeClient::sendOscUpdate()
} }


#ifdef BUILD_BRIDGE_PLUGIN #ifdef BUILD_BRIDGE_PLUGIN
void CarlaBridgeClient::registerOscEngine(CarlaBackend::CarlaEngine* const engine)
{
qDebug("CarlaBridgeClient::registerOscEngine(%p)", engine);
CARLA_ASSERT(engine);

if (engine)
engine->setOscBridgeData(m_oscData);
}

void CarlaBridgeClient::sendOscBridgeError(const char* const error) void CarlaBridgeClient::sendOscBridgeError(const char* const error)
{ {
qDebug("CarlaBridgeClient::sendOscBridgeError(\"%s\")", error); qDebug("CarlaBridgeClient::sendOscBridgeError(\"%s\")", error);
@@ -145,12 +160,6 @@ void CarlaBridgeClient::sendOscBridgeError(const char* const error)
if (m_oscData && m_oscData->target) if (m_oscData && m_oscData->target)
osc_send_bridge_error(m_oscData, error); osc_send_bridge_error(m_oscData, error);
} }

void CarlaBridgeClient::registerOscEngine(CarlaBackend::CarlaEngine* const engine)
{
qDebug("CarlaBridgeClient::registerOscEngine(%p)", engine);
engine->setOscBridgeData(m_oscData);
}
#endif #endif


// --------------------------------------------------------------------- // ---------------------------------------------------------------------
@@ -250,18 +259,6 @@ void CarlaBridgeClient::sendOscExiting()
osc_send_exiting(m_oscData); osc_send_exiting(m_oscData);
} }


#ifdef BUILD_BRIDGE_PLUGIN
void CarlaBridgeClient::sendOscBridgeUpdate()
{
qDebug("CarlaBridgeClient::sendOscBridgeUpdate()");
CARLA_ASSERT(m_oscData);
CARLA_ASSERT(m_oscData->target && m_osc.m_serverPath);

if (m_oscData && m_oscData->target && m_osc.m_serverPath)
osc_send_bridge_update(m_oscData, m_osc.m_serverPath);
}
#endif

#ifdef BRIDGE_LV2 #ifdef BRIDGE_LV2
void CarlaBridgeClient::sendOscLv2TransferAtom(const int32_t portIndex, const char* const typeStr, const char* const atomBuf) void CarlaBridgeClient::sendOscLv2TransferAtom(const int32_t portIndex, const char* const typeStr, const char* const atomBuf)
{ {
@@ -282,6 +279,18 @@ void CarlaBridgeClient::sendOscLv2TransferEvent(const int32_t portIndex, const c
} }
#endif #endif


#ifdef BUILD_BRIDGE_PLUGIN
void CarlaBridgeClient::sendOscBridgeUpdate()
{
qDebug("CarlaBridgeClient::sendOscBridgeUpdate()");
CARLA_ASSERT(m_oscData);
CARLA_ASSERT(m_oscData->target && m_osc.m_serverPath);

if (m_oscData && m_oscData->target && m_osc.m_serverPath)
osc_send_bridge_update(m_oscData, m_osc.m_serverPath);
}
#endif

// --------------------------------------------------------------------- // ---------------------------------------------------------------------


#ifdef BUILD_BRIDGE_UI #ifdef BUILD_BRIDGE_UI
@@ -292,6 +301,7 @@ void* CarlaBridgeClient::getContainerId()


bool CarlaBridgeClient::uiLibOpen(const char* const filename) bool CarlaBridgeClient::uiLibOpen(const char* const filename)
{ {
CARLA_ASSERT(! m_uiLib);
CARLA_ASSERT(filename); CARLA_ASSERT(filename);


if (m_uiFilename) if (m_uiFilename)
@@ -305,6 +315,8 @@ bool CarlaBridgeClient::uiLibOpen(const char* const filename)


bool CarlaBridgeClient::uiLibClose() bool CarlaBridgeClient::uiLibClose()
{ {
CARLA_ASSERT(m_uiLib);

if (m_uiLib) if (m_uiLib)
{ {
const bool closed = lib_close(m_uiLib); const bool closed = lib_close(m_uiLib);
@@ -317,6 +329,8 @@ bool CarlaBridgeClient::uiLibClose()


void* CarlaBridgeClient::uiLibSymbol(const char* const symbol) void* CarlaBridgeClient::uiLibSymbol(const char* const symbol)
{ {
CARLA_ASSERT(m_uiLib);

if (m_uiLib) if (m_uiLib)
return lib_symbol(m_uiLib, symbol); return lib_symbol(m_uiLib, symbol);




+ 5
- 7
c++/carla-bridge/carla_bridge_client.hpp View File

@@ -20,8 +20,6 @@


#include "carla_bridge_osc.hpp" #include "carla_bridge_osc.hpp"


#include <QtCore/QMutex>

#ifdef BUILD_BRIDGE_PLUGIN #ifdef BUILD_BRIDGE_PLUGIN
namespace CarlaBackend { namespace CarlaBackend {
class CarlaEngine; class CarlaEngine;
@@ -98,8 +96,8 @@ public:
void sendOscUpdate(); void sendOscUpdate();


#ifdef BUILD_BRIDGE_PLUGIN #ifdef BUILD_BRIDGE_PLUGIN
void sendOscBridgeError(const char* const error);
void registerOscEngine(CarlaBackend::CarlaEngine* const engine); void registerOscEngine(CarlaBackend::CarlaEngine* const engine);
void sendOscBridgeError(const char* const error);
#endif #endif


// --------------------------------------------------------------------- // ---------------------------------------------------------------------
@@ -121,15 +119,15 @@ protected:
void sendOscMidi(const uint8_t midiBuf[4]); void sendOscMidi(const uint8_t midiBuf[4]);
void sendOscExiting(); void sendOscExiting();


#ifdef BUILD_BRIDGE_PLUGIN
void sendOscBridgeUpdate();
#endif

#ifdef BRIDGE_LV2 #ifdef BRIDGE_LV2
void sendOscLv2TransferAtom(const int32_t portIndex, const char* const typeStr, const char* const atomBuf); void sendOscLv2TransferAtom(const int32_t portIndex, const char* const typeStr, const char* const atomBuf);
void sendOscLv2TransferEvent(const int32_t portIndex, const char* const typeStr, const char* const atomBuf); void sendOscLv2TransferEvent(const int32_t portIndex, const char* const typeStr, const char* const atomBuf);
#endif #endif


#ifdef BUILD_BRIDGE_PLUGIN
void sendOscBridgeUpdate();
#endif

// --------------------------------------------------------------------- // ---------------------------------------------------------------------


#ifdef BUILD_BRIDGE_UI #ifdef BUILD_BRIDGE_UI


+ 35
- 37
c++/carla-bridge/carla_bridge_osc.cpp View File

@@ -1,6 +1,6 @@
/* /*
* Carla Bridge OSC * Carla Bridge OSC
* Copyright (C) 2012 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2012 Filipe Coelho <falktx@falktx.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -234,6 +234,16 @@ int CarlaBridgeOsc::handleMessage(const char* const path, const int argc, const
return handleMsgLv2TransferEvent(argc, argv, types); return handleMsgLv2TransferEvent(argc, argv, types);
#endif #endif


#ifdef BUILD_BRIDGE_PLUGIN
// Plugin methods
if (strcmp(method, "plugin_save_now") == 0)
return handleMsgPluginSaveNow();
if (strcmp(method, "plugin_set_chunk") == 0)
return handleMsgPluginSetChunk(argc, argv, types);
if (strcmp(method, "plugin_set_custom_data") == 0)
return handleMsgPluginSetCustomData(argc, argv, types);
#endif

#if 0 #if 0
// TODO // TODO
else if (strcmp(method, "set_parameter_midi_channel") == 0) else if (strcmp(method, "set_parameter_midi_channel") == 0)
@@ -254,36 +264,11 @@ int CarlaBridgeOsc::handleMsgConfigure(CARLA_BRIDGE_OSC_HANDLE_ARGS)
if (! client) if (! client)
return 1; return 1;


#ifdef BUILD_BRIDGE_PLUGIN
const char* const key = (const char*)&argv[0]->s;
const char* const value = (const char*)&argv[1]->s;
// nothing here for now


if (strcmp(key, CarlaBackend::CARLA_BRIDGE_MSG_SAVE_NOW) == 0)
{
client->saveNow();
}
else if (strcmp(key, CarlaBackend::CARLA_BRIDGE_MSG_SET_CHUNK) == 0)
{
client->setChunkData(value);
}
else if (strcmp(key, CarlaBackend::CARLA_BRIDGE_MSG_SET_CUSTOM) == 0)
{
QStringList vList = QString(value).split("·", QString::KeepEmptyParts);

if (vList.size() == 3)
{
const char* const cType = vList.at(0).toUtf8().constData();
const char* const cKey = vList.at(1).toUtf8().constData();
const char* const cValue = vList.at(2).toUtf8().constData();
return 0;


client->setCustomData(cType, cKey, cValue);
}
}
#else
Q_UNUSED(argv); Q_UNUSED(argv);
#endif

return 0;
} }


int CarlaBridgeOsc::handleMsgControl(CARLA_BRIDGE_OSC_HANDLE_ARGS) int CarlaBridgeOsc::handleMsgControl(CARLA_BRIDGE_OSC_HANDLE_ARGS)
@@ -296,6 +281,7 @@ int CarlaBridgeOsc::handleMsgControl(CARLA_BRIDGE_OSC_HANDLE_ARGS)


const int32_t index = argv[0]->i; const int32_t index = argv[0]->i;
const float value = argv[1]->f; const float value = argv[1]->f;

client->setParameter(index, value); client->setParameter(index, value);


return 0; return 0;
@@ -310,34 +296,44 @@ int CarlaBridgeOsc::handleMsgProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS)
return 1; return 1;


const int32_t index = argv[0]->i; const int32_t index = argv[0]->i;

client->setProgram(index); client->setProgram(index);


return 0; return 0;
} }


#ifdef BUILD_BRIDGE_PLUGIN
int CarlaBridgeOsc::handleMsgMidiProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS) int CarlaBridgeOsc::handleMsgMidiProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS)
{ {
qDebug("CarlaBridgeOsc::handleMsgMidiProgram()"); qDebug("CarlaBridgeOsc::handleMsgMidiProgram()");
#ifdef BUILD_BRIDGE_PLUGIN
CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(1, "i"); CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(1, "i");
#else
CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(2, "ii");
#endif


if (! client) if (! client)
return 1; return 1;


#ifdef BUILD_BRIDGE_PLUGIN
const int32_t index = argv[0]->i; const int32_t index = argv[0]->i;

client->setMidiProgram(index); client->setMidiProgram(index);

return 0;
}
#else #else
int CarlaBridgeOsc::handleMsgMidiProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS)
{
qDebug("CarlaBridgeOsc::handleMsgMidiProgram()");
CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(2, "ii");

if (! client)
return 1;

const int32_t bank = argv[0]->i; const int32_t bank = argv[0]->i;
const int32_t program = argv[1]->i; const int32_t program = argv[1]->i;

client->setMidiProgram(bank, program); client->setMidiProgram(bank, program);
#endif


return 0; return 0;
} }
#endif


int CarlaBridgeOsc::handleMsgMidi(CARLA_BRIDGE_OSC_HANDLE_ARGS) int CarlaBridgeOsc::handleMsgMidi(CARLA_BRIDGE_OSC_HANDLE_ARGS)
{ {
@@ -359,13 +355,15 @@ int CarlaBridgeOsc::handleMsgMidi(CARLA_BRIDGE_OSC_HANDLE_ARGS)


if (MIDI_IS_STATUS_NOTE_OFF(status)) if (MIDI_IS_STATUS_NOTE_OFF(status))
{ {
uint8_t note = data[2];
const uint8_t note = data[2];

client->noteOff(channel, note); client->noteOff(channel, note);
} }
else if (MIDI_IS_STATUS_NOTE_ON(status)) else if (MIDI_IS_STATUS_NOTE_ON(status))
{ {
uint8_t note = data[2];
uint8_t velo = data[3];
const uint8_t note = data[2];
const uint8_t velo = data[3];

client->noteOn(channel, note, velo); client->noteOn(channel, note, velo);
} }




+ 7
- 1
c++/carla-bridge/carla_bridge_osc.hpp View File

@@ -1,6 +1,6 @@
/* /*
* Carla Bridge OSC * Carla Bridge OSC
* Copyright (C) 2012 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2012 Filipe Coelho <falktx@falktx.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -110,6 +110,12 @@ private:
int handleMsgLv2TransferEvent(CARLA_BRIDGE_OSC_HANDLE_ARGS); int handleMsgLv2TransferEvent(CARLA_BRIDGE_OSC_HANDLE_ARGS);
#endif #endif


#ifdef BUILD_BRIDGE_PLUGIN
int handleMsgPluginSaveNow();
int handleMsgPluginSetChunk(CARLA_BRIDGE_OSC_HANDLE_ARGS);
int handleMsgPluginSetCustomData(CARLA_BRIDGE_OSC_HANDLE_ARGS);
#endif

// ------------------------------------------------------------------- // -------------------------------------------------------------------


static void osc_error_handler(const int num, const char* const msg, const char* const path) static void osc_error_handler(const int num, const char* const msg, const char* const path)


+ 54
- 26
c++/carla-bridge/carla_bridge_toolkit-gtk.cpp View File

@@ -53,13 +53,18 @@ public:


window = nullptr; window = nullptr;


lastX = lastY = 0;
lastWidth = lastHeight = 0;
lastX = 0;
lastY = 0;
lastWidth = 0;
lastHeight = 0;
} }


~CarlaToolkitGtk() ~CarlaToolkitGtk()
{ {
qDebug("CarlaToolkitGtk::~CarlaToolkitGtk()"); qDebug("CarlaToolkitGtk::~CarlaToolkitGtk()");

if (window)
gtk_widget_destroy(window);
} }


void init() void init()
@@ -68,44 +73,61 @@ public:
CARLA_ASSERT(! window); CARLA_ASSERT(! window);


gtk_init(&gargc, &gargv); gtk_init(&gargc, &gargv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_resize(GTK_WINDOW(window), 30, 30);
gtk_widget_hide(window);
} }


void exec(const bool showGui) void exec(const bool showGui)
{ {
qDebug("CarlaToolkitGtk::exec(%s)", bool2str(showGui)); qDebug("CarlaToolkitGtk::exec(%s)", bool2str(showGui));
CARLA_ASSERT(window);
CARLA_ASSERT(client); CARLA_ASSERT(client);


window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_container_add(GTK_CONTAINER(window), (GtkWidget*)client->getWidget());
GtkWidget* const widget = (GtkWidget*)client->getWidget();

gtk_container_add(GTK_CONTAINER(window), widget);


gtk_window_set_resizable(GTK_WINDOW(window), client->isResizable()); gtk_window_set_resizable(GTK_WINDOW(window), client->isResizable());
gtk_window_set_title(GTK_WINDOW(window), uiTitle); gtk_window_set_title(GTK_WINDOW(window), uiTitle);


gtk_window_get_position(GTK_WINDOW(window), &lastX, &lastY);
gtk_window_get_size(GTK_WINDOW(window), &lastWidth, &lastHeight);

if (settings.contains(QString("%1/pos_x").arg(uiTitle))) if (settings.contains(QString("%1/pos_x").arg(uiTitle)))
{ {
lastX = settings.value(QString("%1/pos_x").arg(uiTitle), lastX).toInt();
lastY = settings.value(QString("%1/pos_y").arg(uiTitle), lastY).toInt();
gtk_window_move(GTK_WINDOW(window), lastX, lastY);
gtk_window_get_position(GTK_WINDOW(window), &lastX, &lastY);

bool hasX, hasY;
lastX = settings.value(QString("%1/pos_x").arg(uiTitle), lastX).toInt(&hasX);
lastY = settings.value(QString("%1/pos_y").arg(uiTitle), lastY).toInt(&hasY);

if (hasX && hasY)
gtk_window_move(GTK_WINDOW(window), lastX, lastY);


if (client->isResizable()) if (client->isResizable())
{ {
lastWidth = settings.value(QString("%1/width").arg(uiTitle), lastWidth).toInt();
lastHeight = settings.value(QString("%1/height").arg(uiTitle), lastHeight).toInt();
gtk_window_resize(GTK_WINDOW(window), lastWidth, lastHeight);
gtk_window_get_size(GTK_WINDOW(window), &lastWidth, &lastHeight);

bool hasWidth, hasHeight;
lastWidth = settings.value(QString("%1/width").arg(uiTitle), lastWidth).toInt(&hasWidth);
lastHeight = settings.value(QString("%1/height").arg(uiTitle), lastHeight).toInt(&hasHeight);

if (hasWidth && hasHeight)
gtk_window_resize(GTK_WINDOW(window), lastWidth, lastHeight);
} }
} }


g_timeout_add(50, gtk_ui_timeout, this);
g_signal_connect(window, "destroy", G_CALLBACK(gtk_ui_destroy), this);

if (showGui) if (showGui)
show(); show();
else else
client->sendOscUpdate(); client->sendOscUpdate();


// Timer
g_timeout_add(50, gtk_ui_timeout, this);
g_signal_connect(window, "destroy", G_CALLBACK(gtk_ui_destroy), this);

// First idle
handleTimeout();

// Main loop // Main loop
gtk_main(); gtk_main();
} }
@@ -159,6 +181,11 @@ public:
// --------------------------------------------------------------------- // ---------------------------------------------------------------------


protected: protected:
GtkWidget* window;
QSettings settings;

gint lastX, lastY, lastWidth, lastHeight;

void handleDestroy() void handleDestroy()
{ {
qDebug("CarlaToolkitGtk::handleDestroy()"); qDebug("CarlaToolkitGtk::handleDestroy()");
@@ -180,30 +207,31 @@ protected:
gtk_window_get_size(GTK_WINDOW(window), &lastWidth, &lastHeight); gtk_window_get_size(GTK_WINDOW(window), &lastWidth, &lastHeight);
} }


// FIXME
// FIXME?
return client->isOscControlRegistered() ? client->oscIdle() : false; return client->isOscControlRegistered() ? client->oscIdle() : false;
} }


// --------------------------------------------------------------------- // ---------------------------------------------------------------------


private: private:
GtkWidget* window;
QSettings settings;

gint lastX, lastY, lastWidth, lastHeight;

static void gtk_ui_destroy(GtkWidget*, gpointer data) static void gtk_ui_destroy(GtkWidget*, gpointer data)
{ {
CarlaToolkitGtk* const _this_ = (CarlaToolkitGtk*)data;
_this_->handleDestroy();
CARLA_ASSERT(data);

if (CarlaToolkitGtk* const _this_ = (CarlaToolkitGtk*)data)
_this_->handleDestroy();


gtk_main_quit(); gtk_main_quit();
} }


static gboolean gtk_ui_timeout(gpointer data) static gboolean gtk_ui_timeout(gpointer data)
{ {
CarlaToolkitGtk* const _this_ = (CarlaToolkitGtk*)data;
return _this_->handleTimeout();
CARLA_ASSERT(data);

if (CarlaToolkitGtk* const _this_ = (CarlaToolkitGtk*)data)
return _this_->handleTimeout();

return false;
} }
}; };




+ 27
- 20
c++/carla-bridge/carla_bridge_toolkit-qt.cpp View File

@@ -184,6 +184,9 @@ public:
// Timer // Timer
msgTimer = startTimer(50); msgTimer = startTimer(50);


// First idle
handleTimeout();

// Main loop // Main loop
app->exec(); app->exec();
} }
@@ -201,14 +204,11 @@ public:


if (window) if (window)
{ {
if (client)
{
settings.setValue(QString("%1/pos_x").arg(uiTitle), window->x());
settings.setValue(QString("%1/pos_y").arg(uiTitle), window->y());
settings.setValue(QString("%1/width").arg(uiTitle), window->width());
settings.setValue(QString("%1/height").arg(uiTitle), window->height());
settings.sync();
}
settings.setValue(QString("%1/pos_x").arg(uiTitle), window->x());
settings.setValue(QString("%1/pos_y").arg(uiTitle), window->y());
settings.setValue(QString("%1/width").arg(uiTitle), window->width());
settings.setValue(QString("%1/height").arg(uiTitle), window->height());
settings.sync();


window->close(); window->close();


@@ -300,22 +300,29 @@ protected:
QEmbedContainer* embedContainer; QEmbedContainer* embedContainer;
#endif #endif


void timerEvent(QTimerEvent* const event)
void handleTimeout()
{ {
if (event->timerId() == msgTimer && client)
if (! client)
return;

if (needsResize)
{ {
if (needsResize)
{
client->toolkitResize(nextWidth, nextHeight);
needsResize = false;
}
client->toolkitResize(nextWidth, nextHeight);
needsResize = false;
}


if (client->isOscControlRegistered() && ! client->oscIdle())
{
killTimer(msgTimer);
msgTimer = 0;
}
if (client->isOscControlRegistered() && ! client->oscIdle())
{
killTimer(msgTimer);
msgTimer = 0;
} }
}

private:
void timerEvent(QTimerEvent* const event)
{
if (event->timerId() == msgTimer)
handleTimeout();


QObject::timerEvent(event); QObject::timerEvent(event);
} }


+ 1
- 1
c++/carla-bridge/carla_bridge_toolkit.cpp View File

@@ -26,7 +26,7 @@ CARLA_BRIDGE_START_NAMESPACE
CarlaBridgeToolkit::CarlaBridgeToolkit(CarlaBridgeClient* const client_, const char* const newTitle) CarlaBridgeToolkit::CarlaBridgeToolkit(CarlaBridgeClient* const client_, const char* const newTitle)
: client(client_) : client(client_)
{ {
qDebug("CarlaBridgeToolkit::CarlaBridgeToolkit(\"%s\")", newTitle);
qDebug("CarlaBridgeToolkit::CarlaBridgeToolkit(%p, \"%s\")", client, newTitle);
CARLA_ASSERT(client); CARLA_ASSERT(client);
CARLA_ASSERT(newTitle); CARLA_ASSERT(newTitle);




+ 3
- 3
c++/carla-bridge/carla_bridge_ui-lv2.cpp View File

@@ -618,7 +618,8 @@ public:


void handleProgramChanged(int32_t /*index*/) void handleProgramChanged(int32_t /*index*/)
{ {
sendOscConfigure("reloadprograms", "");
if (isOscControlRegistered())
sendOscConfigure("reloadprograms", "");
} }


uint32_t handleUiPortMap(const char* const symbol) uint32_t handleUiPortMap(const char* const symbol)
@@ -651,10 +652,9 @@ public:
return 0; return 0;
} }



void handleUiWrite(uint32_t portIndex, uint32_t bufferSize, uint32_t format, const void* buffer) void handleUiWrite(uint32_t portIndex, uint32_t bufferSize, uint32_t format, const void* buffer)
{ {
if (! buffer)
if (! (buffer && isOscControlRegistered()))
return; return;


if (format == 0) if (format == 0)


+ 7
- 0
c++/carla-utils/carla_osc_utils.hpp View File

@@ -35,6 +35,11 @@ struct CarlaOscData {
source(nullptr), source(nullptr),
target(nullptr) {} target(nullptr) {}


~CarlaOscData()
{
free();
}

void free() void free()
{ {
if (path) if (path)
@@ -300,6 +305,7 @@ void osc_send_bridge_error(const CarlaOscData* const oscData, const char* const
} }
#endif #endif


#if defined(BRIDGE_LV2) || defined(WANT_LV2)
static inline static inline
void osc_send_lv2_transfer_atom(const CarlaOscData* const oscData, const int32_t portIndex, const char* const typeStr, const char* const atomBuf) void osc_send_lv2_transfer_atom(const CarlaOscData* const oscData, const int32_t portIndex, const char* const typeStr, const char* const atomBuf)
{ {
@@ -335,6 +341,7 @@ void osc_send_lv2_transfer_event(const CarlaOscData* const oscData, const int32_
lo_send(oscData->target, targetPath, "iss", portIndex, typeStr, atomBuf); lo_send(oscData->target, targetPath, "iss", portIndex, typeStr, atomBuf);
} }
} }
#endif


// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------




Loading…
Cancel
Save