Browse Source

Fixing

tags/v0.9.0
falkTX 12 years ago
parent
commit
aeee5dac92
10 changed files with 127 additions and 52 deletions
  1. +2
    -0
      c++/carla-backend/carla_backend.hpp
  2. +4
    -1
      c++/carla-bridge/Makefile
  3. +2
    -2
      c++/carla-bridge/carla_bridge_client.cpp
  4. +3
    -2
      c++/carla-bridge/carla_bridge_client.hpp
  5. +84
    -42
      c++/carla-bridge/carla_bridge_plugin.cpp
  6. +1
    -0
      c++/carla-bridge/carla_bridge_toolkit-qt.cpp
  7. +15
    -0
      c++/carla-engine/jack.cpp
  8. +3
    -0
      c++/carla-plugin/carla_plugin.cpp
  9. +7
    -3
      c++/carla-plugin/lv2.cpp
  10. +6
    -2
      c++/carla-plugin/vst.cpp

+ 2
- 0
c++/carla-backend/carla_backend.hpp View File

@@ -52,7 +52,9 @@ const unsigned int MAX_PARAMETERS = 200; //!< Default value for the maximum numb
* \see CarlaPlugin::hints() * \see CarlaPlugin::hints()
* @{ * @{
*/ */
#ifndef BUILD_BRIDGE
const unsigned int PLUGIN_IS_BRIDGE = 0x001; //!< Plugin is a bridge (ie, BridgePlugin). This hint is required because "bridge" itself is not a plugin type. const unsigned int PLUGIN_IS_BRIDGE = 0x001; //!< Plugin is a bridge (ie, BridgePlugin). This hint is required because "bridge" itself is not a plugin type.
#endif
const unsigned int PLUGIN_IS_SYNTH = 0x002; //!< Plugin is a synthesizer (produces sound). const unsigned int PLUGIN_IS_SYNTH = 0x002; //!< Plugin is a synthesizer (produces sound).
const unsigned int PLUGIN_HAS_GUI = 0x004; //!< Plugin has its own custom GUI. const unsigned int PLUGIN_HAS_GUI = 0x004; //!< Plugin has its own custom GUI.
const unsigned int PLUGIN_USES_CHUNKS = 0x008; //!< Plugin uses chunks to save internal data.\see CarlaPlugin::chunkData() const unsigned int PLUGIN_USES_CHUNKS = 0x008; //!< Plugin uses chunks to save internal data.\see CarlaPlugin::chunkData()


+ 4
- 1
c++/carla-bridge/Makefile View File

@@ -405,6 +405,9 @@ doxygen: carla_bridge.doxygen


clean: clean:
rm -f *.o *.dll *.so *.exe rm -f *.o *.dll *.so *.exe
rm -f $(OBJS_POSIX32)
rm -f $(OBJS_POSIX64)
rm -f $(OBJS_WIN32)
rm -f $(OBJS_WIN64)
rm -f carla-bridge-lv2-gtk2 carla-bridge-lv2-gtk3 carla-bridge-lv2-qt4 carla-bridge-lv2-qt5 carla-bridge-lv2-x11 carla-bridge-vst-x11 rm -f carla-bridge-lv2-gtk2 carla-bridge-lv2-gtk3 carla-bridge-lv2-qt4 carla-bridge-lv2-qt5 carla-bridge-lv2-x11 carla-bridge-vst-x11
rm -f carla-bridge-posix32 carla-bridge-posix64 rm -f carla-bridge-posix32 carla-bridge-posix64
rm -f $(OBJS_POSIX32) $(OBJS_POSIX64) $(OBJS_WIN32) $(OBJS_WIN64)

+ 2
- 2
c++/carla-bridge/carla_bridge_client.cpp View File

@@ -180,7 +180,7 @@ void CarlaBridgeClient::toolkitHide()
m_toolkit->hide(); m_toolkit->hide();
} }


void CarlaBridgeClient::toolkitResize(int width, int height)
void CarlaBridgeClient::toolkitResize(const int width, const int height)
{ {
qDebug("CarlaBridgeClient::toolkitResize(%i, %i)", width, height); qDebug("CarlaBridgeClient::toolkitResize(%i, %i)", width, height);


@@ -282,12 +282,12 @@ void CarlaBridgeClient::sendOscLv2TransferEvent(const int32_t portIndex, const c


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


#ifdef BUILD_BRIDGE_UI
void* CarlaBridgeClient::getContainerId() void* CarlaBridgeClient::getContainerId()
{ {
return m_toolkit->getContainerId(); return m_toolkit->getContainerId();
} }


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


+ 3
- 2
c++/carla-bridge/carla_bridge_client.hpp View File

@@ -99,7 +99,7 @@ public:


void toolkitShow(); void toolkitShow();
void toolkitHide(); void toolkitHide();
void toolkitResize(int width, int height);
void toolkitResize(const int width, const int height);
void toolkitExec(const bool showGui); void toolkitExec(const bool showGui);
void toolkitQuit(); void toolkitQuit();


@@ -120,8 +120,9 @@ protected:


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


#ifdef BUILD_BRIDGE_UI
void* getContainerId(); void* getContainerId();

#ifdef BUILD_BRIDGE_UI
bool uiLibOpen(const char* const filename); bool uiLibOpen(const char* const filename);
bool uiLibClose(); bool uiLibClose();
void* uiLibSymbol(const char* const symbol); void* uiLibSymbol(const char* const symbol);


+ 84
- 42
c++/carla-bridge/carla_bridge_plugin.cpp View File

@@ -21,7 +21,6 @@
#include "carla_bridge_toolkit.hpp" #include "carla_bridge_toolkit.hpp"
#include "carla_plugin.hpp" #include "carla_plugin.hpp"


//#include <QtCore/QTimerEvent>
#include <QtCore/QDir> #include <QtCore/QDir>
#include <QtCore/QFile> #include <QtCore/QFile>
#include <QtCore/QTextStream> #include <QtCore/QTextStream>
@@ -110,8 +109,9 @@ public:
app = nullptr; app = nullptr;
gui = nullptr; gui = nullptr;


m_hasUI = false;
m_uiQuit = false; m_uiQuit = false;
m_uiShow = true;
m_uiShow = false;


init(); init();
} }
@@ -119,8 +119,23 @@ public:
~CarlaBridgeToolkitPlugin() ~CarlaBridgeToolkitPlugin()
{ {
qDebug("CarlaBridgeToolkitPlugin::~CarlaBridgeToolkitPlugin()"); qDebug("CarlaBridgeToolkitPlugin::~CarlaBridgeToolkitPlugin()");
CARLA_ASSERT(! app);
CARLA_ASSERT(! gui);

if (gui)
{
gui->close();

delete gui;
gui = nullptr;
}

if (app)
{
if (! app->closingDown())
app->quit();

delete app;
app = nullptr;
}
} }


void init() void init()
@@ -143,7 +158,7 @@ public:


if (showGui) if (showGui)
{ {
if (m_uiShow)
if (m_hasUI)
show(); show();
} }
else else
@@ -164,41 +179,12 @@ public:
qDebug("CarlaBridgeToolkitPlugin::quit()"); qDebug("CarlaBridgeToolkitPlugin::quit()");
CARLA_ASSERT(app); CARLA_ASSERT(app);


if (gui)
{
gui->close();

delete gui;
gui = nullptr;
}

if (app)
{
if (! app->closingDown())
app->quit();

delete app;
app = nullptr;
}
if (app && ! app->closingDown())
app->quit();
} }


void show()
{
qDebug("CarlaBridgeToolkitPlugin::show()");
CARLA_ASSERT(gui);

if (gui && m_uiShow)
gui->setVisible(true);
}

void hide()
{
qDebug("CarlaBridgeToolkitPlugin::hide()");
CARLA_ASSERT(gui);

if (gui && m_uiShow)
gui->setVisible(false);
}
void show();
void hide();


void resize(const int width, const int height) void resize(const int width, const int height)
{ {
@@ -229,9 +215,10 @@ public:
return nullptr; return nullptr;
} }


void hasUI(const bool yesNo)
void setHasUI(const bool hasUI, const bool showUI)
{ {
m_uiShow = yesNo;
m_hasUI = hasUI;
m_uiShow = showUI;
} }


protected: protected:
@@ -241,6 +228,7 @@ protected:
void guiClosedCallback(); void guiClosedCallback();


private: private:
bool m_hasUI;
bool m_uiQuit; bool m_uiQuit;
bool m_uiShow; bool m_uiShow;
}; };
@@ -294,14 +282,25 @@ public:
plugin->getGuiInfo(&guiType, &guiResizable); plugin->getGuiInfo(&guiType, &guiResizable);


CarlaBridgeToolkitPlugin* const plugToolkit = (CarlaBridgeToolkitPlugin*)m_toolkit; CarlaBridgeToolkitPlugin* const plugToolkit = (CarlaBridgeToolkitPlugin*)m_toolkit;
plugToolkit->hasUI(guiType != CarlaBackend::GUI_NONE);

qWarning("----------------------------------------------------- trying..., %s", CarlaBackend::GuiType2Str(guiType));


if (guiType == CarlaBackend::GUI_INTERNAL_QT4 || guiType == CarlaBackend::GUI_INTERNAL_COCOA || guiType == CarlaBackend::GUI_INTERNAL_HWND || guiType == CarlaBackend::GUI_INTERNAL_X11) if (guiType == CarlaBackend::GUI_INTERNAL_QT4 || guiType == CarlaBackend::GUI_INTERNAL_COCOA || guiType == CarlaBackend::GUI_INTERNAL_HWND || guiType == CarlaBackend::GUI_INTERNAL_X11)
{
plugin->setGuiContainer(plugToolkit->getContainer()); plugin->setGuiContainer(plugToolkit->getContainer());
plugToolkit->setHasUI(true, true);
}
else
{
plugToolkit->setHasUI(guiType != CarlaBackend::GUI_NONE, false);
}
} }


void quit() void quit()
{ {
engine = nullptr;
plugin = nullptr;

if (msgTimerGUI != 0) if (msgTimerGUI != 0)
{ {
killTimer(msgTimerGUI); killTimer(msgTimerGUI);
@@ -345,6 +344,14 @@ public:
engine->osc_send_bridge_configure(CarlaBackend::CARLA_BRIDGE_MSG_HIDE_GUI, ""); engine->osc_send_bridge_configure(CarlaBackend::CARLA_BRIDGE_MSG_HIDE_GUI, "");
} }


void showPluginGui(const bool yesNo)
{
CARLA_ASSERT(plugin);

if (plugin)
plugin->showGui(yesNo);
}

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


static void callback(void* const ptr, CarlaBackend::CallbackType const action, const unsigned short, const int value1, const int value2, const double value3, const char* const valueStr) static void callback(void* const ptr, CarlaBackend::CallbackType const action, const unsigned short, const int value1, const int value2, const double value3, const char* const valueStr)
@@ -570,8 +577,37 @@ protected:


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


void CarlaBridgeToolkitPlugin::show()
{
qDebug("----------------------------------------------------------------------------------------------------------");
qDebug("CarlaBridgeToolkitPlugin::show()");
CARLA_ASSERT(gui);

CarlaPluginClient* const plugClient = (CarlaPluginClient*)client;

plugClient->showPluginGui(true);

if (gui && m_uiShow)
gui->setVisible(true);
}

void CarlaBridgeToolkitPlugin::hide()
{
qDebug("CarlaBridgeToolkitPlugin::hide()");
CARLA_ASSERT(gui);

CarlaPluginClient* const plugClient = (CarlaPluginClient*)client;

if (gui && m_uiShow)
gui->setVisible(false);

plugClient->showPluginGui(false);
}

void CarlaBridgeToolkitPlugin::guiClosedCallback() void CarlaBridgeToolkitPlugin::guiClosedCallback()
{ {
qDebug("CarlaBridgeToolkitPlugin::guiClosedCallback()");

CarlaPluginClient* const plugClient = (CarlaPluginClient*)client; CarlaPluginClient* const plugClient = (CarlaPluginClient*)client;


if (m_uiQuit) if (m_uiQuit)
@@ -692,7 +728,13 @@ int main(int argc, char* argv[])
engine->setCallback(client.callback, &client); engine->setCallback(client.callback, &client);
client.setEngine(engine); client.setEngine(engine);


if (! engine->init(""))
// Init engine
CarlaString engName(name ? name : label);
engName += " (master)";
engName.toBasic();
engName.truncate(engine->maxClientNameSize());

if (! engine->init(engName))
{ {
if (const char* const lastError = engine->getLastError()) if (const char* const lastError = engine->getLastError())
{ {


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

@@ -97,6 +97,7 @@ public:
{ {
qDebug("CarlaBridgeToolkitQt::~CarlaBridgeToolkitQt()"); qDebug("CarlaBridgeToolkitQt::~CarlaBridgeToolkitQt()");
CARLA_ASSERT(! app); CARLA_ASSERT(! app);
CARLA_ASSERT(! window);
CARLA_ASSERT(! msgTimer); CARLA_ASSERT(! msgTimer);
} }




+ 15
- 0
c++/carla-engine/jack.cpp View File

@@ -568,6 +568,21 @@ public:


return false; return false;
#else #else
// open temp client to get initial buffer-size and sample-rate values
if (bufferSize == 0 || sampleRate == 0.0)
{
m_client = jackbridge_client_open(clientName, JackNullOption, nullptr);

if (m_client)
{
bufferSize = jackbridge_get_buffer_size(m_client);
sampleRate = jackbridge_get_sample_rate(m_client);

jackbridge_client_close(m_client);
m_client = nullptr;
}
}

name = clientName; name = clientName;
name.toBasic(); name.toBasic();




+ 3
- 0
c++/carla-plugin/carla_plugin.cpp View File

@@ -1063,8 +1063,10 @@ void CarlaPlugin::updateOscData(const lo_address source, const char* const url)
free((void*)host); free((void*)host);
free((void*)port); free((void*)port);


#ifndef BUILD_BRIDGE
if (m_hints & PLUGIN_IS_BRIDGE) if (m_hints & PLUGIN_IS_BRIDGE)
return; return;
#endif


osc_send_sample_rate(&osc.data, x_engine->getSampleRate()); osc_send_sample_rate(&osc.data, x_engine->getSampleRate());


@@ -1581,6 +1583,7 @@ CarlaPluginGUI::~CarlaPluginGUI()
qDebug("CarlaPluginGUI::~CarlaPluginGUI()"); qDebug("CarlaPluginGUI::~CarlaPluginGUI()");
CARLA_ASSERT(m_container); CARLA_ASSERT(m_container);


// FIXME, automatically deleted by parent ?
delete m_container; delete m_container;
} }




+ 7
- 3
c++/carla-plugin/lv2.cpp View File

@@ -973,6 +973,8 @@ public:


void showGui(const bool yesNo) void showGui(const bool yesNo)
{ {
qDebug("Lv2Plugin::showGui(%s)", bool2str(yesNo));

switch(gui.type) switch(gui.type)
{ {
case GUI_NONE: case GUI_NONE:
@@ -4241,7 +4243,7 @@ public:
break; break;


case LV2_UI_GTK2: case LV2_UI_GTK2:
#ifdef WANT_SUIL
#if defined(WANT_SUIL) || defined(BUILD_BRIDGE)
if (isUiBridgeable(i) && preferUiBridges) if (isUiBridgeable(i) && preferUiBridges)
eGtk2 = i; eGtk2 = i;
#else #else
@@ -4293,8 +4295,10 @@ public:
else if (iSuil >= 0) else if (iSuil >= 0)
iFinal = iSuil; iFinal = iSuil;


const bool isBridged = false; //(iFinal == eQt4 || iFinal == eCocoa || iFinal == eHWND || iFinal == eX11 || iFinal == eGtk2 || iFinal == eGtk3);
#ifdef WANT_SUIL
#ifndef WANT_SUIL
const bool isBridged = (iFinal == eQt4 || iFinal == eCocoa || iFinal == eHWND || iFinal == eX11 || iFinal == eGtk2 || iFinal == eGtk3);
#else
const bool isBridged = false;
const bool isSuil = (iFinal == iSuil && !isBridged); const bool isSuil = (iFinal == iSuil && !isBridged);
#endif #endif




+ 6
- 2
c++/carla-plugin/vst.cpp View File

@@ -1549,12 +1549,16 @@ public:


intptr_t handleAudioMasterGetBlockSize() intptr_t handleAudioMasterGetBlockSize()
{ {
return x_engine->getBufferSize();
const uint32_t bufferSize = x_engine->getBufferSize();
effect->dispatcher(effect, effSetBlockSize, 0, bufferSize, nullptr, 0.0f);
return bufferSize;
} }


intptr_t handleAudioMasterGetSampleRate() intptr_t handleAudioMasterGetSampleRate()
{ {
return x_engine->getSampleRate();
const double sampleRate = x_engine->getSampleRate();
effect->dispatcher(effect, effSetSampleRate, 0, 0, nullptr, sampleRate);
return sampleRate;
} }


intptr_t handleAudioMasterGetTime() intptr_t handleAudioMasterGetTime()


Loading…
Cancel
Save