Browse Source

Misc fixes

tags/v0.9.0
falkTX 13 years ago
parent
commit
a2617d4252
7 changed files with 64 additions and 45 deletions
  1. +7
    -6
      src/carla/Makefile
  2. +17
    -6
      src/carla/carla_threads.cpp
  3. +4
    -1
      src/carla/carla_threads.h
  4. +0
    -5
      src/carla/dssi.cpp
  5. +1
    -1
      src/carla/lv2-rtmempool/rtmempool.c
  6. +33
    -23
      src/carla/lv2.cpp
  7. +2
    -3
      src/carla/vst.cpp

+ 7
- 6
src/carla/Makefile View File

@@ -7,10 +7,11 @@
CC ?= gcc
CXX ?= g++

CARLA_BUILD_FLAGS = -Wall -std=c++0x -fPIC -I. -I../carla-includes `pkg-config --cflags jack fluidsynth liblo QtCore QtGui` $(CXXFLAGS)
# CARLA_BUILD_FLAGS += -DNDEBUG -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT -O2 -fvisibility=hidden -ffast-math -fomit-frame-pointer -mtune=generic -msse
CARLA_BUILD_FLAGS += -DDEBUG -O0 -g
CARLA_LINK_FLAGS = -shared -fPIC -ldl `pkg-config --libs jack fluidsynth liblo QtCore QtGui` $(LDFLAGS)
CARLA_C_FLAGS = -Wall -fPIC -I. -I../carla-includes $(CFLAGS)
CARLA_CXX_FLAGS = -Wall -std=c++0x -fPIC -I. -I../carla-includes `pkg-config --cflags jack fluidsynth liblo QtCore QtGui` $(CXXFLAGS)
#CARLA_CXX_FLAGS += -DNDEBUG -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT -O2 -fvisibility=hidden -ffast-math -fomit-frame-pointer -mtune=generic -msse
CARLA_CXX_FLAGS += -DDEBUG -O0 -g
CARLA_LINK_FLAGS = -shared -fPIC -ldl `pkg-config --libs jack fluidsynth liblo QtCore QtGui` $(LDFLAGS)

OBJS = carla_backend.o carla_bridge.o carla_jack.o carla_osc.o carla_shared.o carla_threads.o ladspa.o dssi.o lv2.o vst.o sf2.o lv2-rtmempool/rtmempool.o

@@ -24,10 +25,10 @@ carla_backend.dll: $(OBJS) windows.def
$(CXX) $(OBJS) windows.def $(CARLA_LINK_FLAGS) -o carla_backend.dll

.c.o:
$(CC) -c $< $(CARLA_BUILD_FLAGS) -o $@
$(CC) -c $< $(CARLA_C_FLAGS) -o $@

.cpp.o:
$(CXX) -c $< $(CARLA_BUILD_FLAGS) -o $@
$(CXX) -c $< $(CARLA_CXX_FLAGS) -o $@

clean:
rm -f *.o lv2-rtmempool/*.o *.so *.dll

+ 17
- 6
src/carla/carla_threads.cpp View File

@@ -203,23 +203,29 @@ CarlaPluginThread::CarlaPluginThread(CarlaPlugin* plugin, PluginThreadMode mode)
{
qDebug("CarlaPluginThread::CarlaPluginThread(%p, %i)", plugin, mode);

m_process = new QProcess(nullptr);
m_process = nullptr;
}

CarlaPluginThread::~CarlaPluginThread()
{
delete m_process;
if (m_process)
delete m_process;
}

void CarlaPluginThread::setOscData(const char* binary, const char* label, const char* data1)
void CarlaPluginThread::setOscData(const char* binary, const char* label, const char* data1, const char* data2, const char* data3)
{
m_binary = QString(binary);
m_label = QString(label);
m_data1 = QString(data1);
m_data2 = QString(data2);
m_data3 = QString(data3);
}

void CarlaPluginThread::run()
{
if (m_process == nullptr)
m_process = new QProcess(nullptr);

QStringList arguments;

switch (m_mode)
@@ -232,9 +238,12 @@ void CarlaPluginThread::run()
break;

case PLUGIN_THREAD_LV2_GUI:
//arguments << QString("%1/%2").arg(get_host_osc_url()).arg(m_plugin->id());
//arguments << m_label;
//arguments << QString("%1 (GUI)").arg(m_plugin->name());
/* osc_url */ arguments << QString("%1/%2").arg(get_host_osc_url()).arg(m_plugin->id());
/* URI */ arguments << m_label;
/* ui-URI */ arguments << m_data1;
/* ui-filename */ arguments << m_data2;
/* ui-bundle */ arguments << m_data3;
/* ui-title */ arguments << QString("%1 (GUI)").arg(m_plugin->name());
break;

case PLUGIN_THREAD_BRIDGE:
@@ -243,6 +252,7 @@ void CarlaPluginThread::run()
/* filename */ arguments << m_plugin->filename();
/* label */ arguments << m_label;
break;

default:
break;
}
@@ -253,6 +263,7 @@ void CarlaPluginThread::run()
switch (m_mode)
{
case PLUGIN_THREAD_DSSI_GUI:
case PLUGIN_THREAD_LV2_GUI:
if (m_plugin->update_osc_gui())
{
m_process->waitForFinished(-1);


+ 4
- 1
src/carla/carla_threads.h View File

@@ -50,7 +50,8 @@ public:
CarlaPluginThread(CarlaPlugin* plugin, PluginThreadMode mode);
~CarlaPluginThread();

void setOscData(const char* binary, const char* label, const char* data1="");
void startNow();
void setOscData(const char* binary, const char* label, const char* data1="", const char* data2="", const char* data3="");

protected:
virtual void run();
@@ -62,6 +63,8 @@ private:
QString m_binary;
QString m_label;
QString m_data1;
QString m_data2;
QString m_data3;

QProcess* m_process;
};


+ 0
- 5
src/carla/dssi.cpp View File

@@ -19,8 +19,6 @@

#include "dssi/dssi.h"

#include <QtCore/QStringList>

class DssiPlugin : public CarlaPlugin
{
public:
@@ -50,7 +48,6 @@ public:
{
if (osc.data.target)
{
qDebug("DSSI GUI close - sending UI hide & quit");
osc_send_hide(&osc.data);
osc_send_quit(&osc.data);
}
@@ -72,8 +69,6 @@ public:

delete osc.thread;
}
else
qDebug("DSSI GUI close - no thread registered");

osc_clear_data(&osc.data);
}


+ 1
- 1
src/carla/lv2-rtmempool/rtmempool.c View File

@@ -387,7 +387,7 @@ rtsafe_memory_pool_create2(

void
rtmempool_allocator_init(
struct lv2_rtsafe_memory_pool_provider * allocator_ptr)
lv2_rtsafe_memory_pool_provider * allocator_ptr)
{
allocator_ptr->create = rtsafe_memory_pool_create2;
allocator_ptr->destroy = rtsafe_memory_pool_destroy;


+ 33
- 23
src/carla/lv2.cpp View File

@@ -167,24 +167,31 @@ public:
break;

case GUI_EXTERNAL_OSC:
// FIXME - fix dssi first, then copy

// if (gui.visible)
// osc_send_hide(&osc.data);

// osc_send_quit(&osc.data);
if (osc.data.target)
{
osc_send_hide(&osc.data);
osc_send_quit(&osc.data);
}

// if (osc.thread)
// {
// osc.thread->quit();
if (osc.thread)
{
// Wait a bit first, try safe quit else force kill
if (osc.thread->isRunning())
{
if (osc.thread->wait(2000) == false)
osc.thread->quit();

// if (!osc.thread->wait(3000)) // 3 sec
// qWarning("Failed to properly stop LV2 OSC GUI thread");
if (osc.thread->isRunning() && osc.thread->wait(1000) == false)
{
qWarning("Failed to properly stop LV2 OSC-GUI thread");
osc.thread->terminate();
}
}

// delete osc.thread;
// }
delete osc.thread;
}

// osc_clear_data(&osc.data);
osc_clear_data(&osc.data);

break;

@@ -2081,31 +2088,34 @@ public:

if (is_bridged)
{
gui.type = GUI_EXTERNAL_OSC;
//osc.thread = lv2_thread;
//CarlaPluginThread* lv2ui_thread = new Lv2OscGuiThread();
//lv2_thread->set_plugin_id(plugin->id);
//lv2_thread->set_ui_type(UiType);
//lv2_thread->start();
const char* osc_binary;

switch (UiType)
{
case LV2_UI_QT4:
qDebug("Will use LV2 Qt4 UI, bridged");
osc_binary = nullptr;
break;

case LV2_UI_X11:
qDebug("Will use LV2 X11 UI, bridged");
osc_binary = nullptr;
break;

case LV2_UI_GTK2:
qDebug("Will use LV2 Gtk2 UI, bridged");
osc_binary = nullptr;
break;

default:
qDebug("Will use LV2 Unknown UI, bridged");
osc_binary = nullptr;
break;
}

if (osc_binary)
{
gui.type = GUI_EXTERNAL_OSC;
osc.thread = new CarlaPluginThread(this, CarlaPluginThread::PLUGIN_THREAD_LV2_GUI);
osc.thread->setOscData("lv2-gtk here", descriptor->URI, ui.descriptor->URI, ui.rdf_descriptor->Binary, ui.rdf_descriptor->Bundle);
}
}
else
{


+ 2
- 3
src/carla/vst.cpp View File

@@ -65,7 +65,6 @@ public:
gui.width = 0;
gui.height = 0;

// FIXME?
memset(midi_events, 0, sizeof(VstMidiEvent)*MAX_MIDI_EVENTS);

for (unsigned short i=0; i<MAX_MIDI_EVENTS; i++)
@@ -115,8 +114,7 @@ public:
if (effect->flags & effFlagsIsSynth)
return PLUGIN_CATEGORY_SYNTH;

// TODO - try to get category from label
return PLUGIN_CATEGORY_NONE;
return get_category_from_name(m_name);
}

virtual long unique_id()
@@ -175,6 +173,7 @@ public:

virtual void set_parameter_value(uint32_t param_id, double value, bool gui_send, bool osc_send, bool callback_send)
{
fix_parameter_value(value, param.ranges[param_id]);
effect->setParameter(effect, param_id, value);
CarlaPlugin::set_parameter_value(param_id, value, gui_send, osc_send, callback_send);
}


Loading…
Cancel
Save