| @@ -28,7 +28,7 @@ all: BIN RES UI WIDGETS | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Binaries (native) | # Binaries (native) | ||||
| BIN: libs backend bridges discovery plugin theme | |||||
| BIN: libs backend bridges-plugin bridges-ui discovery plugin theme | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -105,13 +105,18 @@ bin/libcarla_standalone2$(LIB_EXT): libs .FORCE | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| bridges: bin/carla-bridge-native$(APP_EXT) | |||||
| bridges-plugin: bin/carla-bridge-native$(APP_EXT) | |||||
| bin/carla-bridge-native$(APP_EXT): libs .FORCE | bin/carla-bridge-native$(APP_EXT): libs .FORCE | ||||
| $(MAKE) -C source/bridges-plugin | $(MAKE) -C source/bridges-plugin | ||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| bridges-ui: libs .FORCE | |||||
| $(MAKE) -C source/bridges-ui | |||||
| # -------------------------------------------------------------- | |||||
| discovery: bin/carla-discovery-native$(APP_EXT) | discovery: bin/carla-discovery-native$(APP_EXT) | ||||
| bin/carla-discovery-native$(APP_EXT): libs .FORCE | bin/carla-discovery-native$(APP_EXT): libs .FORCE | ||||
| @@ -124,7 +129,7 @@ plugin: bin/carla-native.lv2/manifest.ttl | |||||
| bin/carla-native.lv2/carla-native$(LIB_EXT): backend .FORCE | bin/carla-native.lv2/carla-native$(LIB_EXT): backend .FORCE | ||||
| $(MAKE) -C source/plugin ../../$@ | $(MAKE) -C source/plugin ../../$@ | ||||
| bin/carla-native.lv2/manifest.ttl: bin/carla-native-lv2-export$(APP_EXT) bridges discovery .FORCE | |||||
| bin/carla-native.lv2/manifest.ttl: bin/carla-native-lv2-export$(APP_EXT) bridges-plugin discovery .FORCE | |||||
| cd bin && ./carla-native-lv2-export$(APP_EXT); cd .. | cd bin && ./carla-native-lv2-export$(APP_EXT); cd .. | ||||
| cd bin/carla-native.lv2 && $(LINK) ../*bridge-* ../carla-discovery-* .; cd .. | cd bin/carla-native.lv2 && $(LINK) ../*bridge-* ../carla-discovery-* .; cd .. | ||||
| @@ -1385,7 +1385,7 @@ void CarlaPlugin::idle() | |||||
| CarlaString uiTitle(pData->name); | CarlaString uiTitle(pData->name); | ||||
| uiTitle += " (GUI)"; | uiTitle += " (GUI)"; | ||||
| if (CarlaPluginUi::tryTransientWinIdMatch(pData->osc.data.target != nullptr ? pData->osc.thread.getPid() : 0, uiTitle, pData->engine->getOptions().frontendWinId)) | |||||
| if (CarlaPluginUI::tryTransientWinIdMatch(pData->osc.data.target != nullptr ? pData->osc.thread.getPid() : 0, uiTitle, pData->engine->getOptions().frontendWinId)) | |||||
| pData->transientTryCounter = 0; | pData->transientTryCounter = 0; | ||||
| } | } | ||||
| @@ -379,7 +379,7 @@ struct Lv2PluginOptions { | |||||
| // ----------------------------------------------------- | // ----------------------------------------------------- | ||||
| class Lv2Plugin : public CarlaPlugin, | class Lv2Plugin : public CarlaPlugin, | ||||
| CarlaPluginUi::CloseCallback | |||||
| CarlaPluginUI::CloseCallback | |||||
| { | { | ||||
| public: | public: | ||||
| Lv2Plugin(CarlaEngine* const engine, const uint id) | Lv2Plugin(CarlaEngine* const engine, const uint id) | ||||
| @@ -1175,7 +1175,7 @@ public: | |||||
| case LV2_UI_COCOA: | case LV2_UI_COCOA: | ||||
| # ifdef CARLA_OS_MAC | # ifdef CARLA_OS_MAC | ||||
| fUi.window = CarlaPluginUi::newCocoa(this, frontendWinId); | |||||
| fUi.window = CarlaPluginUI::newCocoa(this, frontendWinId); | |||||
| # else | # else | ||||
| msg = "UI is for MacOS only"; | msg = "UI is for MacOS only"; | ||||
| # endif | # endif | ||||
| @@ -1183,7 +1183,7 @@ public: | |||||
| case LV2_UI_WINDOWS: | case LV2_UI_WINDOWS: | ||||
| # ifdef CARLA_OS_WIN | # ifdef CARLA_OS_WIN | ||||
| fUi.window = CarlaPluginUi::newWindows(this, frontendWinId); | |||||
| fUi.window = CarlaPluginUI::newWindows(this, frontendWinId); | |||||
| # else | # else | ||||
| msg = "UI is for Windows only"; | msg = "UI is for Windows only"; | ||||
| # endif | # endif | ||||
| @@ -1191,7 +1191,7 @@ public: | |||||
| case LV2_UI_X11: | case LV2_UI_X11: | ||||
| # ifdef HAVE_X11 | # ifdef HAVE_X11 | ||||
| fUi.window = CarlaPluginUi::newX11(this, frontendWinId); | |||||
| fUi.window = CarlaPluginUI::newX11(this, frontendWinId); | |||||
| # else | # else | ||||
| msg = "UI is only for systems with X11"; | msg = "UI is only for systems with X11"; | ||||
| # endif | # endif | ||||
| @@ -3879,38 +3879,32 @@ public: | |||||
| if (bridgeBinary.isEmpty()) | if (bridgeBinary.isEmpty()) | ||||
| return nullptr; | return nullptr; | ||||
| #ifdef CARLA_OS_LINUX | |||||
| // test for local build | |||||
| if (bridgeBinary.endsWith("/source/backend/")) | |||||
| bridgeBinary += "../bridges/"; | |||||
| #endif | |||||
| switch (type) | switch (type) | ||||
| { | { | ||||
| case LV2_UI_GTK2: | case LV2_UI_GTK2: | ||||
| bridgeBinary += "carla-bridge-lv2-gtk2"; | |||||
| bridgeBinary += OS_SEP_STR "carla-bridge-lv2-gtk2"; | |||||
| break; | break; | ||||
| case LV2_UI_GTK3: | case LV2_UI_GTK3: | ||||
| bridgeBinary += "carla-bridge-lv2-gtk3"; | |||||
| bridgeBinary += OS_SEP_STR "carla-bridge-lv2-gtk3"; | |||||
| break; | break; | ||||
| case LV2_UI_QT4: | case LV2_UI_QT4: | ||||
| bridgeBinary += "carla-bridge-lv2-qt4"; | |||||
| bridgeBinary += OS_SEP_STR "carla-bridge-lv2-qt4"; | |||||
| break; | break; | ||||
| case LV2_UI_QT5: | case LV2_UI_QT5: | ||||
| bridgeBinary += "carla-bridge-lv2-qt5"; | |||||
| bridgeBinary += OS_SEP_STR "carla-bridge-lv2-qt5"; | |||||
| break; | break; | ||||
| case LV2_UI_COCOA: | case LV2_UI_COCOA: | ||||
| bridgeBinary += "carla-bridge-lv2-cocoa"; | |||||
| bridgeBinary += OS_SEP_STR "carla-bridge-lv2-cocoa"; | |||||
| break; | break; | ||||
| case LV2_UI_WINDOWS: | case LV2_UI_WINDOWS: | ||||
| bridgeBinary += "carla-bridge-lv2-windows"; | |||||
| bridgeBinary += OS_SEP_STR "carla-bridge-lv2-windows"; | |||||
| break; | break; | ||||
| case LV2_UI_X11: | case LV2_UI_X11: | ||||
| bridgeBinary += "carla-bridge-lv2-x11"; | |||||
| bridgeBinary += OS_SEP_STR "carla-bridge-lv2-x11"; | |||||
| break; | break; | ||||
| case LV2_UI_EXTERNAL: | case LV2_UI_EXTERNAL: | ||||
| case LV2_UI_OLD_EXTERNAL: | case LV2_UI_OLD_EXTERNAL: | ||||
| bridgeBinary += "carla-bridge-lv2-external"; | |||||
| bridgeBinary += OS_SEP_STR "carla-bridge-lv2-external"; | |||||
| break; | break; | ||||
| default: | default: | ||||
| return nullptr; | return nullptr; | ||||
| @@ -4235,10 +4229,10 @@ public: | |||||
| // ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
| void handleExternalUiClosed() | |||||
| void handleExternalUIClosed() | |||||
| { | { | ||||
| CARLA_SAFE_ASSERT_RETURN(fUi.type == UI::TYPE_EXTERNAL,); | CARLA_SAFE_ASSERT_RETURN(fUi.type == UI::TYPE_EXTERNAL,); | ||||
| carla_debug("Lv2Plugin::handleExternalUiClosed()"); | |||||
| carla_debug("Lv2Plugin::handleExternalUIClosed()"); | |||||
| if (fUi.handle != nullptr && fUi.descriptor != nullptr && fUi.descriptor->cleanup != nullptr) | if (fUi.handle != nullptr && fUi.descriptor != nullptr && fUi.descriptor->cleanup != nullptr) | ||||
| fUi.descriptor->cleanup(fUi.handle); | fUi.descriptor->cleanup(fUi.handle); | ||||
| @@ -4248,11 +4242,11 @@ public: | |||||
| pData->engine->callback(ENGINE_CALLBACK_UI_STATE_CHANGED, pData->id, 0, 0, 0.0f, nullptr); | pData->engine->callback(ENGINE_CALLBACK_UI_STATE_CHANGED, pData->id, 0, 0, 0.0f, nullptr); | ||||
| } | } | ||||
| void handlePluginUiClosed() override | |||||
| void handlePluginUIClosed() override | |||||
| { | { | ||||
| CARLA_SAFE_ASSERT_RETURN(fUi.type == UI::TYPE_EMBED,); | CARLA_SAFE_ASSERT_RETURN(fUi.type == UI::TYPE_EMBED,); | ||||
| CARLA_SAFE_ASSERT_RETURN(fUi.window != nullptr,); | CARLA_SAFE_ASSERT_RETURN(fUi.window != nullptr,); | ||||
| carla_debug("Lv2Plugin::handlePluginUiClosed()"); | |||||
| carla_debug("Lv2Plugin::handlePluginUIClosed()"); | |||||
| fUi.window->hide(); | fUi.window->hide(); | ||||
| @@ -4266,10 +4260,10 @@ public: | |||||
| // ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
| uint32_t handleUiPortMap(const char* const symbol) const noexcept | |||||
| uint32_t handleUIPortMap(const char* const symbol) const noexcept | |||||
| { | { | ||||
| CARLA_SAFE_ASSERT_RETURN(symbol != nullptr && symbol[0] != '\0', LV2UI_INVALID_PORT_INDEX); | CARLA_SAFE_ASSERT_RETURN(symbol != nullptr && symbol[0] != '\0', LV2UI_INVALID_PORT_INDEX); | ||||
| carla_debug("Lv2Plugin::handleUiPortMap(\"%s\")", symbol); | |||||
| carla_debug("Lv2Plugin::handleUIPortMap(\"%s\")", symbol); | |||||
| for (uint32_t i=0; i < fRdfDescriptor->PortCount; ++i) | for (uint32_t i=0; i < fRdfDescriptor->PortCount; ++i) | ||||
| { | { | ||||
| @@ -4280,23 +4274,23 @@ public: | |||||
| return LV2UI_INVALID_PORT_INDEX; | return LV2UI_INVALID_PORT_INDEX; | ||||
| } | } | ||||
| int handleUiResize(const int width, const int height) | |||||
| int handleUIResize(const int width, const int height) | |||||
| { | { | ||||
| CARLA_SAFE_ASSERT_RETURN(fUi.window != nullptr, 1); | CARLA_SAFE_ASSERT_RETURN(fUi.window != nullptr, 1); | ||||
| CARLA_SAFE_ASSERT_RETURN(width > 0, 1); | CARLA_SAFE_ASSERT_RETURN(width > 0, 1); | ||||
| CARLA_SAFE_ASSERT_RETURN(height > 0, 1); | CARLA_SAFE_ASSERT_RETURN(height > 0, 1); | ||||
| carla_debug("Lv2Plugin::handleUiResize(%i, %i)", width, height); | |||||
| carla_debug("Lv2Plugin::handleUIResize(%i, %i)", width, height); | |||||
| fUi.window->setSize(static_cast<uint>(width), static_cast<uint>(height), true); | fUi.window->setSize(static_cast<uint>(width), static_cast<uint>(height), true); | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| void handleUiWrite(const uint32_t rindex, const uint32_t bufferSize, const uint32_t format, const void* const buffer) | |||||
| void handleUIWrite(const uint32_t rindex, const uint32_t bufferSize, const uint32_t format, const void* const buffer) | |||||
| { | { | ||||
| CARLA_SAFE_ASSERT_RETURN(buffer != nullptr,); | CARLA_SAFE_ASSERT_RETURN(buffer != nullptr,); | ||||
| CARLA_SAFE_ASSERT_RETURN(bufferSize > 0,); | CARLA_SAFE_ASSERT_RETURN(bufferSize > 0,); | ||||
| carla_debug("Lv2Plugin::handleUiWrite(%i, %i, %i, %p)", rindex, bufferSize, format, buffer); | |||||
| carla_debug("Lv2Plugin::handleUIWrite(%i, %i, %i, %p)", rindex, bufferSize, format, buffer); | |||||
| uint32_t index = LV2UI_INVALID_PORT_INDEX; | uint32_t index = LV2UI_INVALID_PORT_INDEX; | ||||
| @@ -4350,7 +4344,7 @@ public: | |||||
| } break; | } break; | ||||
| default: | default: | ||||
| carla_stdout("Lv2Plugin::handleUiWrite(%i, %i, %i:\"%s\", %p) - unknown format", rindex, bufferSize, format, carla_lv2_urid_unmap(this, format), buffer); | |||||
| carla_stdout("Lv2Plugin::handleUIWrite(%i, %i, %i:\"%s\", %p) - unknown format", rindex, bufferSize, format, carla_lv2_urid_unmap(this, format), buffer); | |||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| @@ -5282,7 +5276,7 @@ private: | |||||
| const LV2UI_Descriptor* descriptor; | const LV2UI_Descriptor* descriptor; | ||||
| const LV2_RDF_UI* rdfDescriptor; | const LV2_RDF_UI* rdfDescriptor; | ||||
| CarlaPluginUi* window; | |||||
| CarlaPluginUI* window; | |||||
| UI() | UI() | ||||
| : type(TYPE_NULL), | : type(TYPE_NULL), | ||||
| @@ -5724,7 +5718,7 @@ private: | |||||
| CARLA_SAFE_ASSERT_RETURN(controller != nullptr,); | CARLA_SAFE_ASSERT_RETURN(controller != nullptr,); | ||||
| carla_debug("carla_lv2_external_ui_closed(%p)", controller); | carla_debug("carla_lv2_external_ui_closed(%p)", controller); | ||||
| ((Lv2Plugin*)controller)->handleExternalUiClosed(); | |||||
| ((Lv2Plugin*)controller)->handleExternalUIClosed(); | |||||
| } | } | ||||
| // ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
| @@ -5735,7 +5729,7 @@ private: | |||||
| CARLA_SAFE_ASSERT_RETURN(handle != nullptr, LV2UI_INVALID_PORT_INDEX); | CARLA_SAFE_ASSERT_RETURN(handle != nullptr, LV2UI_INVALID_PORT_INDEX); | ||||
| carla_debug("carla_lv2_ui_port_map(%p, \"%s\")", handle, symbol); | carla_debug("carla_lv2_ui_port_map(%p, \"%s\")", handle, symbol); | ||||
| return ((Lv2Plugin*)handle)->handleUiPortMap(symbol); | |||||
| return ((Lv2Plugin*)handle)->handleUIPortMap(symbol); | |||||
| } | } | ||||
| // ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
| @@ -5746,7 +5740,7 @@ private: | |||||
| CARLA_SAFE_ASSERT_RETURN(handle != nullptr, 1); | CARLA_SAFE_ASSERT_RETURN(handle != nullptr, 1); | ||||
| carla_debug("carla_lv2_ui_resize(%p, %i, %i)", handle, width, height); | carla_debug("carla_lv2_ui_resize(%p, %i, %i)", handle, width, height); | ||||
| return ((Lv2Plugin*)handle)->handleUiResize(width, height); | |||||
| return ((Lv2Plugin*)handle)->handleUIResize(width, height); | |||||
| } | } | ||||
| // ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
| @@ -5757,7 +5751,7 @@ private: | |||||
| CARLA_SAFE_ASSERT_RETURN(controller != nullptr,); | CARLA_SAFE_ASSERT_RETURN(controller != nullptr,); | ||||
| carla_debug("carla_lv2_ui_write_function(%p, %i, %i, %i, %p)", controller, port_index, buffer_size, format, buffer); | carla_debug("carla_lv2_ui_write_function(%p, %i, %i, %i, %p)", controller, port_index, buffer_size, format, buffer); | ||||
| ((Lv2Plugin*)controller)->handleUiWrite(port_index, buffer_size, format, buffer); | |||||
| ((Lv2Plugin*)controller)->handleUIWrite(port_index, buffer_size, format, buffer); | |||||
| } | } | ||||
| // ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
| @@ -51,7 +51,7 @@ const uint PLUGIN_WANTS_MIDI_INPUT = 0x8000; | |||||
| // ----------------------------------------------------- | // ----------------------------------------------------- | ||||
| class VstPlugin : public CarlaPlugin, | class VstPlugin : public CarlaPlugin, | ||||
| CarlaPluginUi::CloseCallback | |||||
| CarlaPluginUI::CloseCallback | |||||
| { | { | ||||
| public: | public: | ||||
| VstPlugin(CarlaEngine* const engine, const uint id) | VstPlugin(CarlaEngine* const engine, const uint id) | ||||
| @@ -437,16 +437,16 @@ public: | |||||
| #if defined(CARLA_OS_LINUX) | #if defined(CARLA_OS_LINUX) | ||||
| # ifdef HAVE_X11 | # ifdef HAVE_X11 | ||||
| fUi.window = CarlaPluginUi::newX11(this, frontendWinId); | |||||
| fUi.window = CarlaPluginUI::newX11(this, frontendWinId); | |||||
| # else | # else | ||||
| msg = "UI is only for systems with X11"; | msg = "UI is only for systems with X11"; | ||||
| # endif | # endif | ||||
| #elif defined(CARLA_OS_MAC) | #elif defined(CARLA_OS_MAC) | ||||
| # ifdef __LP64__ | # ifdef __LP64__ | ||||
| fUi.window = CarlaPluginUi::newCocoa(this, frontendWinId); | |||||
| fUi.window = CarlaPluginUI::newCocoa(this, frontendWinId); | |||||
| # endif | # endif | ||||
| #elif defined(CARLA_OS_WIN) | #elif defined(CARLA_OS_WIN) | ||||
| fUi.window = CarlaPluginUi::newWindows(this, frontendWinId); | |||||
| fUi.window = CarlaPluginUI::newWindows(this, frontendWinId); | |||||
| #else | #else | ||||
| msg = "Unknown UI type"; | msg = "Unknown UI type"; | ||||
| #endif | #endif | ||||
| @@ -1760,11 +1760,11 @@ public: | |||||
| // ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
| protected: | protected: | ||||
| void handlePluginUiClosed() override | |||||
| void handlePluginUIClosed() override | |||||
| { | { | ||||
| CARLA_SAFE_ASSERT_RETURN(fUi.type == UI::UI_EMBED || fUi.type == UI::UI_EXTERNAL,); | CARLA_SAFE_ASSERT_RETURN(fUi.type == UI::UI_EMBED || fUi.type == UI::UI_EXTERNAL,); | ||||
| CARLA_SAFE_ASSERT_RETURN(fUi.window != nullptr,); | CARLA_SAFE_ASSERT_RETURN(fUi.window != nullptr,); | ||||
| carla_debug("VstPlugin::handlePluginUiClosed()"); | |||||
| carla_debug("VstPlugin::handlePluginUIClosed()"); | |||||
| showCustomUI(false); | showCustomUI(false); | ||||
| pData->engine->callback(ENGINE_CALLBACK_UI_STATE_CHANGED, pData->id, 0, 0, 0.0f, nullptr); | pData->engine->callback(ENGINE_CALLBACK_UI_STATE_CHANGED, pData->id, 0, 0, 0.0f, nullptr); | ||||
| @@ -2041,7 +2041,7 @@ protected: | |||||
| if (index == 0xedcd && value == 0 && ptr != nullptr && std::strcmp((const char*)ptr, "EditorClosed") == 0) | if (index == 0xedcd && value == 0 && ptr != nullptr && std::strcmp((const char*)ptr, "EditorClosed") == 0) | ||||
| { | { | ||||
| CARLA_SAFE_ASSERT_BREAK(fUi.type == UI::UI_EXTERNAL); | CARLA_SAFE_ASSERT_BREAK(fUi.type == UI::UI_EXTERNAL); | ||||
| handlePluginUiClosed(); | |||||
| handlePluginUIClosed(); | |||||
| break; | break; | ||||
| } | } | ||||
| // TODO - cockos extensions | // TODO - cockos extensions | ||||
| @@ -2295,13 +2295,7 @@ public: | |||||
| CarlaString bridgeBinary(pData->engine->getOptions().binaryDir); | CarlaString bridgeBinary(pData->engine->getOptions().binaryDir); | ||||
| #if defined(CARLA_OS_LINUX) | #if defined(CARLA_OS_LINUX) | ||||
| bridgeBinary += "carla-bridge-vst-x11"; | |||||
| #elif defined(CARLA_OS_MAC) | |||||
| bridgeBinary += "carla-bridge-vst-mac"; | |||||
| #elif defined(CARLA_OS_WIN) | |||||
| bridgeBinary += "carla-bridge-vst-hwnd.exe"; | |||||
| #else | |||||
| bridgeBinary.clear(); | |||||
| bridgeBinary += OS_SEP_STR "carla-bridge-vst-x11"; | |||||
| #endif | #endif | ||||
| if (bridgeBinary.isNotEmpty() && File(bridgeBinary.buffer()).existsAsFile()) | if (bridgeBinary.isNotEmpty() && File(bridgeBinary.buffer()).existsAsFile()) | ||||
| @@ -2377,7 +2371,7 @@ private: | |||||
| } type; | } type; | ||||
| bool isVisible; // not used in OSC mode | bool isVisible; // not used in OSC mode | ||||
| CarlaPluginUi* window; | |||||
| CarlaPluginUI* window; | |||||
| UI() | UI() | ||||
| : type(UI_NULL), | : type(UI_NULL), | ||||
| @@ -1,6 +1,6 @@ | |||||
| /* | /* | ||||
| * Carla Bridge Client | * Carla Bridge Client | ||||
| * Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com> | |||||
| * Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com> | |||||
| * | * | ||||
| * This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
| * modify it under the terms of the GNU General Public License as | * modify it under the terms of the GNU General Public License as | ||||
| @@ -213,6 +213,12 @@ void* CarlaBridgeClient::getContainerId() | |||||
| return fUI.toolkit->getContainerId(); | return fUI.toolkit->getContainerId(); | ||||
| } | } | ||||
| void* CarlaBridgeClient::getContainerId2() | |||||
| { | |||||
| carla_debug("CarlaBridgeClient::getContainerId2()"); | |||||
| return fUI.toolkit->getContainerId2(); | |||||
| } | |||||
| bool CarlaBridgeClient::uiLibOpen(const char* const filename) | bool CarlaBridgeClient::uiLibOpen(const char* const filename) | ||||
| { | { | ||||
| CARLA_ASSERT(fUI.lib == nullptr); | CARLA_ASSERT(fUI.lib == nullptr); | ||||
| @@ -1,6 +1,6 @@ | |||||
| /* | /* | ||||
| * Carla Bridge Client | * Carla Bridge Client | ||||
| * Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com> | |||||
| * Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com> | |||||
| * | * | ||||
| * This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
| * modify it under the terms of the GNU General Public License as | * modify it under the terms of the GNU General Public License as | ||||
| @@ -43,7 +43,6 @@ public: | |||||
| virtual void* getWidget() const = 0; | virtual void* getWidget() const = 0; | ||||
| virtual bool isResizable() const = 0; | virtual bool isResizable() const = 0; | ||||
| virtual bool needsReparent() const = 0; | |||||
| // --------------------------------------------------------------------- | // --------------------------------------------------------------------- | ||||
| // ui processing | // ui processing | ||||
| @@ -91,6 +90,7 @@ protected: | |||||
| // --------------------------------------------------------------------- | // --------------------------------------------------------------------- | ||||
| void* getContainerId(); | void* getContainerId(); | ||||
| void* getContainerId2(); | |||||
| 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); | ||||
| @@ -38,7 +38,8 @@ public: | |||||
| virtual void hide() = 0; | virtual void hide() = 0; | ||||
| virtual void resize(const int width, const int height) = 0; | virtual void resize(const int width, const int height) = 0; | ||||
| virtual void* getContainerId() const { return nullptr; } | |||||
| virtual void* getContainerId() const { return nullptr; } | |||||
| virtual void* getContainerId2() const { return nullptr; } | |||||
| static CarlaBridgeToolkit* createNew(CarlaBridgeClient* const client, const char* const uiTitle); | static CarlaBridgeToolkit* createNew(CarlaBridgeClient* const client, const char* const uiTitle); | ||||
| @@ -81,19 +81,19 @@ public: | |||||
| gtk_container_add(GTK_CONTAINER(fWindow), widget); | gtk_container_add(GTK_CONTAINER(fWindow), widget); | ||||
| gtk_window_set_resizable(GTK_WINDOW(fWindow), kClient->isResizable()); | gtk_window_set_resizable(GTK_WINDOW(fWindow), kClient->isResizable()); | ||||
| gtk_window_set_title(GTK_WINDOW(fWindow), kUiTitle); | |||||
| gtk_window_set_title(GTK_WINDOW(fWindow), kWindowTitle); | |||||
| #if 0 | #if 0 | ||||
| { | { | ||||
| QSettings settings("falkTX", appName); | QSettings settings("falkTX", appName); | ||||
| if (settings.contains(QString("%1/pos_x").arg(kUiTitle))) | |||||
| if (settings.contains(QString("%1/pos_x").arg(kWindowTitle))) | |||||
| { | { | ||||
| gtk_window_get_position(GTK_WINDOW(fWindow), &fLastX, &fLastY); | gtk_window_get_position(GTK_WINDOW(fWindow), &fLastX, &fLastY); | ||||
| bool hasX, hasY; | bool hasX, hasY; | ||||
| fLastX = settings.value(QString("%1/pos_x").arg(kUiTitle), fLastX).toInt(&hasX); | |||||
| fLastY = settings.value(QString("%1/pos_y").arg(kUiTitle), fLastY).toInt(&hasY); | |||||
| fLastX = settings.value(QString("%1/pos_x").arg(kWindowTitle), fLastX).toInt(&hasX); | |||||
| fLastY = settings.value(QString("%1/pos_y").arg(kWindowTitle), fLastY).toInt(&hasY); | |||||
| if (hasX && hasY) | if (hasX && hasY) | ||||
| gtk_window_move(GTK_WINDOW(fWindow), fLastX, fLastY); | gtk_window_move(GTK_WINDOW(fWindow), fLastX, fLastY); | ||||
| @@ -103,8 +103,8 @@ public: | |||||
| gtk_window_get_size(GTK_WINDOW(fWindow), &fLastWidth, &fLastHeight); | gtk_window_get_size(GTK_WINDOW(fWindow), &fLastWidth, &fLastHeight); | ||||
| bool hasWidth, hasHeight; | bool hasWidth, hasHeight; | ||||
| fLastWidth = settings.value(QString("%1/width").arg(kUiTitle), fLastWidth).toInt(&hasWidth); | |||||
| fLastHeight = settings.value(QString("%1/height").arg(kUiTitle), fLastHeight).toInt(&hasHeight); | |||||
| fLastWidth = settings.value(QString("%1/width").arg(kWindowTitle), fLastWidth).toInt(&hasWidth); | |||||
| fLastHeight = settings.value(QString("%1/height").arg(kWindowTitle), fLastHeight).toInt(&hasHeight); | |||||
| if (hasWidth && hasHeight) | if (hasWidth && hasHeight) | ||||
| gtk_window_resize(GTK_WINDOW(fWindow), fLastWidth, fLastHeight); | gtk_window_resize(GTK_WINDOW(fWindow), fLastWidth, fLastHeight); | ||||
| @@ -194,10 +194,10 @@ protected: | |||||
| #if 0 | #if 0 | ||||
| QSettings settings("falkTX", appName); | QSettings settings("falkTX", appName); | ||||
| settings.setValue(QString("%1/pos_x").arg(kUiTitle), fLastX); | |||||
| settings.setValue(QString("%1/pos_y").arg(kUiTitle), fLastY); | |||||
| settings.setValue(QString("%1/width").arg(kUiTitle), fLastWidth); | |||||
| settings.setValue(QString("%1/height").arg(kUiTitle), fLastHeight); | |||||
| settings.setValue(QString("%1/pos_x").arg(kWindowTitle), fLastX); | |||||
| settings.setValue(QString("%1/pos_y").arg(kWindowTitle), fLastY); | |||||
| settings.setValue(QString("%1/width").arg(kWindowTitle), fLastWidth); | |||||
| settings.setValue(QString("%1/height").arg(kWindowTitle), fLastHeight); | |||||
| #endif | #endif | ||||
| } | } | ||||
| @@ -24,10 +24,135 @@ CARLA_BRIDGE_START_NAMESPACE | |||||
| // ------------------------------------------------------------------------- | // ------------------------------------------------------------------------- | ||||
| class CarlaBridgeToolkitPlugin : public CarlaBridgeToolkit, | |||||
| private CarlaPluginUI::CloseCallback | |||||
| { | |||||
| public: | |||||
| CarlaBridgeToolkitPlugin(CarlaBridgeClient* const client, const char* const uiTitle) | |||||
| : CarlaBridgeToolkit(client, uiTitle), | |||||
| fUI(nullptr), | |||||
| fIdling(false) | |||||
| { | |||||
| carla_debug("CarlaBridgeToolkitPlugin::CarlaBridgeToolkitPlugin(%p, \"%s\")", client, uiTitle); | |||||
| } | |||||
| ~CarlaBridgeToolkitPlugin() override | |||||
| { | |||||
| CARLA_SAFE_ASSERT_RETURN(fUI == nullptr,); | |||||
| carla_debug("CarlaBridgeToolkitPlugin::~CarlaBridgeToolkitPlugin()"); | |||||
| } | |||||
| void init() override | |||||
| { | |||||
| CARLA_SAFE_ASSERT_RETURN(fUI == nullptr,); | |||||
| carla_debug("CarlaBridgeToolkitPlugin::init()"); | |||||
| #if defined(CARLA_OS_MAC) && defined(BRIDGE_COCOA) | |||||
| fUI = CarlaPluginUI::newCocoa(this, 0); | |||||
| #elif defined(CARLA_OS_WIN) && defined(BRIDGE_HWND) | |||||
| fUI = CarlaPluginUI::newWindows(this, 0); | |||||
| #elif defined(HAVE_X11) && defined(BRIDGE_X11) | |||||
| fUI = CarlaPluginUI::newX11(this, 0); | |||||
| #endif | |||||
| CARLA_SAFE_ASSERT_RETURN(fUI != nullptr,); | |||||
| fUI->setTitle(kWindowTitle); | |||||
| } | |||||
| void exec(const bool showUI) override | |||||
| { | |||||
| CARLA_SAFE_ASSERT_RETURN(kClient != nullptr,); | |||||
| CARLA_SAFE_ASSERT_RETURN(fUI != nullptr,); | |||||
| carla_debug("CarlaBridgeToolkitPlugin::exec(%s)", bool2str(showUI)); | |||||
| if (showUI) | |||||
| fUI->show(); | |||||
| fIdling = true; | |||||
| for (; fIdling;) | |||||
| { | |||||
| fUI->idle(); | |||||
| kClient->uiIdle(); | |||||
| if (! kClient->oscIdle()) | |||||
| break; | |||||
| carla_msleep(20); | |||||
| } | |||||
| } | |||||
| void quit() override | |||||
| { | |||||
| CARLA_SAFE_ASSERT_RETURN(fUI != nullptr,); | |||||
| carla_debug("CarlaBridgeToolkitPlugin::quit()"); | |||||
| fIdling = false; | |||||
| delete fUI; | |||||
| fUI = nullptr; | |||||
| } | |||||
| void show() override | |||||
| { | |||||
| CARLA_SAFE_ASSERT_RETURN(fUI != nullptr,); | |||||
| carla_debug("CarlaBridgeToolkitPlugin::show()"); | |||||
| fUI->show(); | |||||
| } | |||||
| void hide() override | |||||
| { | |||||
| CARLA_SAFE_ASSERT_RETURN(fUI != nullptr,); | |||||
| carla_debug("CarlaBridgeToolkitPlugin::hide()"); | |||||
| fUI->hide(); | |||||
| } | |||||
| void resize(int width, int height) override | |||||
| { | |||||
| CARLA_SAFE_ASSERT_RETURN(fUI != nullptr,); | |||||
| carla_debug("CarlaBridgeToolkitPlugin::resize(%i, %i)", width, height); | |||||
| fUI->setSize(width, height, false); | |||||
| } | |||||
| void* getContainerId() const override | |||||
| { | |||||
| CARLA_SAFE_ASSERT_RETURN(fUI != nullptr, nullptr); | |||||
| return fUI->getPtr(); | |||||
| } | |||||
| #ifdef HAVE_X11 | |||||
| void* getContainerId2() const override | |||||
| { | |||||
| CARLA_SAFE_ASSERT_RETURN(fUI != nullptr, nullptr); | |||||
| return fUI->getDisplay(); | |||||
| } | |||||
| #endif | |||||
| // --------------------------------------------------------------------- | |||||
| protected: | |||||
| void handlePluginUIClosed() override | |||||
| { | |||||
| fIdling = false; | |||||
| } | |||||
| // --------------------------------------------------------------------- | |||||
| private: | |||||
| CarlaPluginUI* fUI; | |||||
| bool fIdling; | |||||
| }; | |||||
| // ------------------------------------------------------------------------- | |||||
| CarlaBridgeToolkit* CarlaBridgeToolkit::createNew(CarlaBridgeClient* const client, const char* const uiTitle) | CarlaBridgeToolkit* CarlaBridgeToolkit::createNew(CarlaBridgeClient* const client, const char* const uiTitle) | ||||
| { | { | ||||
| return nullptr; | |||||
| (void)client; (void)uiTitle; | |||||
| return new CarlaBridgeToolkitPlugin(client, uiTitle); | |||||
| } | } | ||||
| // ------------------------------------------------------------------------- | // ------------------------------------------------------------------------- | ||||
| @@ -1,6 +1,6 @@ | |||||
| /* | /* | ||||
| * Carla Bridge Toolkit, Qt version | * Carla Bridge Toolkit, Qt version | ||||
| * Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com> | |||||
| * Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com> | |||||
| * | * | ||||
| * This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
| * modify it under the terms of the GNU General Public License as | * modify it under the terms of the GNU General Public License as | ||||
| @@ -470,14 +470,13 @@ public: | |||||
| void uiClose() override | void uiClose() override | ||||
| { | { | ||||
| CarlaBridgeClient::uiClose(); | |||||
| if (fHandle != nullptr && fDescriptor != nullptr && fDescriptor->cleanup != nullptr) | if (fHandle != nullptr && fDescriptor != nullptr && fDescriptor->cleanup != nullptr) | ||||
| { | { | ||||
| fDescriptor->cleanup(fHandle); | fDescriptor->cleanup(fHandle); | ||||
| fHandle = nullptr; | fHandle = nullptr; | ||||
| } | } | ||||
| CarlaBridgeClient::uiClose(); | |||||
| uiLibClose(); | uiLibClose(); | ||||
| } | } | ||||
| @@ -494,15 +493,6 @@ public: | |||||
| return fIsResizable; | return fIsResizable; | ||||
| } | } | ||||
| bool needsReparent() const override | |||||
| { | |||||
| #if defined(BRIDGE_COCOA) || defined(BRIDGE_HWND) || defined(BRIDGE_X11) | |||||
| return true; | |||||
| #else | |||||
| return false; | |||||
| #endif | |||||
| } | |||||
| // --------------------------------------------------------------------- | // --------------------------------------------------------------------- | ||||
| // ui processing | // ui processing | ||||
| @@ -1154,14 +1144,14 @@ private: | |||||
| CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaLv2Client) | CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaLv2Client) | ||||
| }; | }; | ||||
| #define lv2ClientPtr ((CarlaLv2Client*)fClient) | |||||
| #define lv2ClientPtr ((CarlaLv2Client*)kClient) | |||||
| int CarlaBridgeOsc::handleMsgLv2UiAtomTransfer(CARLA_BRIDGE_OSC_HANDLE_ARGS) | |||||
| int CarlaBridgeOsc::handleMsgLv2AtomTransfer(CARLA_BRIDGE_OSC_HANDLE_ARGS) | |||||
| { | { | ||||
| CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(2, "is"); | CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(2, "is"); | ||||
| carla_debug("CarlaBridgeOsc::handleMsgLv2AtomTransfer()"); | carla_debug("CarlaBridgeOsc::handleMsgLv2AtomTransfer()"); | ||||
| if (fClient == nullptr) | |||||
| if (kClient == nullptr) | |||||
| return 1; | return 1; | ||||
| const int32_t portIndex = argv[0]->i; | const int32_t portIndex = argv[0]->i; | ||||
| @@ -1178,12 +1168,12 @@ int CarlaBridgeOsc::handleMsgLv2UiAtomTransfer(CARLA_BRIDGE_OSC_HANDLE_ARGS) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| int CarlaBridgeOsc::handleMsgLv2UiUridMap(CARLA_BRIDGE_OSC_HANDLE_ARGS) | |||||
| int CarlaBridgeOsc::handleMsgLv2UridMap(CARLA_BRIDGE_OSC_HANDLE_ARGS) | |||||
| { | { | ||||
| CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(2, "is"); | CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(2, "is"); | ||||
| carla_debug("CarlaBridgeOsc::handleMsgLv2UridMap()"); | carla_debug("CarlaBridgeOsc::handleMsgLv2UridMap()"); | ||||
| if (fClient == nullptr) | |||||
| if (kClient == nullptr) | |||||
| return 1; | return 1; | ||||
| const int32_t urid = argv[0]->i; | const int32_t urid = argv[0]->i; | ||||
| @@ -1,6 +1,6 @@ | |||||
| /* | /* | ||||
| * Carla Bridge UI, VST version | * Carla Bridge UI, VST version | ||||
| * Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com> | |||||
| * Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com> | |||||
| * | * | ||||
| * This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
| * modify it under the terms of the GNU General Public License as | * modify it under the terms of the GNU General Public License as | ||||
| @@ -20,13 +20,6 @@ | |||||
| #include "CarlaVstUtils.hpp" | #include "CarlaVstUtils.hpp" | ||||
| #include "CarlaMIDI.h" | #include "CarlaMIDI.h" | ||||
| #include <QtCore/QObject> // FIXME | |||||
| #include <QtCore/QTimerEvent> | |||||
| #if defined(Q_WS_X11) && (QT_VERSION < QT_VERSION_CHECK(5, 0, 0)) | |||||
| # include <QtGui/QX11Info> | |||||
| #endif | |||||
| CARLA_BRIDGE_START_NAMESPACE | CARLA_BRIDGE_START_NAMESPACE | ||||
| // ------------------------------------------------------------------------- | // ------------------------------------------------------------------------- | ||||
| @@ -35,17 +28,13 @@ CARLA_BRIDGE_START_NAMESPACE | |||||
| uint32_t bufferSize = 512; | uint32_t bufferSize = 512; | ||||
| double sampleRate = 44100.0; | double sampleRate = 44100.0; | ||||
| class CarlaVstClient : public QObject, | |||||
| public CarlaBridgeClient | |||||
| class CarlaVstClient : public CarlaBridgeClient | |||||
| { | { | ||||
| public: | public: | ||||
| CarlaVstClient(const char* const uiTitle) | CarlaVstClient(const char* const uiTitle) | ||||
| : QObject(nullptr), | |||||
| CarlaBridgeClient(uiTitle) | |||||
| : CarlaBridgeClient(uiTitle) | |||||
| { | { | ||||
| effect = nullptr; | effect = nullptr; | ||||
| idleTimer = 0; | |||||
| needIdle = false; | needIdle = false; | ||||
| // make client valid | // make client valid | ||||
| @@ -108,9 +97,9 @@ public: | |||||
| effect->resvd1 = ToVstPtr(this); | effect->resvd1 = ToVstPtr(this); | ||||
| #endif | #endif | ||||
| int32_t value = 0; | |||||
| #if defined(Q_WS_X11) && (QT_VERSION < QT_VERSION_CHECK(5, 0, 0)) | |||||
| value = (int64_t)QX11Info::display(); | |||||
| intptr_t value = 0; | |||||
| #if defined(HAVE_X11) && defined(BRIDGE_X11) | |||||
| value = (intptr_t)getContainerId2(); | |||||
| #endif | #endif | ||||
| effect->dispatcher(effect, effOpen, 0, 0, nullptr, 0.0f); | effect->dispatcher(effect, effOpen, 0, 0, nullptr, 0.0f); | ||||
| @@ -145,20 +134,18 @@ public: | |||||
| toolkitResize(width, height); | toolkitResize(width, height); | ||||
| } | } | ||||
| idleTimer = startTimer(50); | |||||
| return true; | return true; | ||||
| } | } | ||||
| void uiIdle() override | void uiIdle() override | ||||
| { | { | ||||
| // TODO | |||||
| if (needIdle) | |||||
| effect->dispatcher(effect, effIdle, 0, 0, nullptr, 0.0f); | |||||
| effect->dispatcher(effect, effEditIdle, 0, 0, nullptr, 0.0f); | |||||
| } | } | ||||
| void uiClose() override | void uiClose() override | ||||
| { | { | ||||
| CarlaBridgeClient::uiClose(); | |||||
| if (effect != nullptr) | if (effect != nullptr) | ||||
| { | { | ||||
| effect->dispatcher(effect, effEditClose, 0, 0, nullptr, 0.0f); | effect->dispatcher(effect, effEditClose, 0, 0, nullptr, 0.0f); | ||||
| @@ -166,6 +153,7 @@ public: | |||||
| effect = nullptr; | effect = nullptr; | ||||
| } | } | ||||
| CarlaBridgeClient::uiClose(); | |||||
| uiLibClose(); | uiLibClose(); | ||||
| } | } | ||||
| @@ -182,11 +170,6 @@ public: | |||||
| return false; | return false; | ||||
| } | } | ||||
| bool needsReparent() const override | |||||
| { | |||||
| return true; | |||||
| } | |||||
| // --------------------------------------------------------------------- | // --------------------------------------------------------------------- | ||||
| // ui processing | // ui processing | ||||
| @@ -241,7 +224,7 @@ public: | |||||
| intptr_t handleAudioMasterGetTime() | intptr_t handleAudioMasterGetTime() | ||||
| { | { | ||||
| memset(&vstTimeInfo, 0, sizeof(VstTimeInfo_R)); | |||||
| memset(&vstTimeInfo, 0, sizeof(VstTimeInfo)); | |||||
| vstTimeInfo.sampleRate = sampleRate; | vstTimeInfo.sampleRate = sampleRate; | ||||
| @@ -420,8 +403,8 @@ public: | |||||
| break; | break; | ||||
| case audioMasterGetTime: | case audioMasterGetTime: | ||||
| static VstTimeInfo_R timeInfo; | |||||
| memset(&timeInfo, 0, sizeof(VstTimeInfo_R)); | |||||
| static VstTimeInfo timeInfo; | |||||
| memset(&timeInfo, 0, sizeof(VstTimeInfo)); | |||||
| timeInfo.sampleRate = sampleRate; | timeInfo.sampleRate = sampleRate; | ||||
| // Tempo | // Tempo | ||||
| @@ -507,27 +490,12 @@ public: | |||||
| return ret; | return ret; | ||||
| } | } | ||||
| protected: | |||||
| void timerEvent(QTimerEvent* const event) | |||||
| { | |||||
| if (event->timerId() == idleTimer && effect) | |||||
| { | |||||
| if (needIdle) | |||||
| effect->dispatcher(effect, effIdle, 0, 0, nullptr, 0.0f); | |||||
| effect->dispatcher(effect, effEditIdle, 0, 0, nullptr, 0.0f); | |||||
| } | |||||
| QObject::timerEvent(event); | |||||
| } | |||||
| private: | private: | ||||
| int unique1; | int unique1; | ||||
| AEffect* effect; | AEffect* effect; | ||||
| VstTimeInfo_R vstTimeInfo; | |||||
| VstTimeInfo vstTimeInfo; | |||||
| int idleTimer; | |||||
| bool needIdle; | bool needIdle; | ||||
| static CarlaVstClient* lastVstPlugin; | static CarlaVstClient* lastVstPlugin; | ||||
| @@ -19,8 +19,8 @@ ifeq ($(CARLA_VESTIGE_HEADER),true) | |||||
| BUILD_VST_FLAGS += -DVESTIGE_HEADER | BUILD_VST_FLAGS += -DVESTIGE_HEADER | ||||
| endif | endif | ||||
| LINK_FLAGS += $(LIBLO_LIBS) | |||||
| LINK_FLAGS += $(JUCE_CORE_LIBS) | LINK_FLAGS += $(JUCE_CORE_LIBS) | ||||
| LINK_FLAGS += $(LIBLO_LIBS) | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -36,8 +36,8 @@ LINK_LV2_QT4_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs QtCore QtGui) | |||||
| BUILD_LV2_QT5_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_QT5 -DBRIDGE_LV2_QT5 $(shell pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets) | BUILD_LV2_QT5_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_QT5 -DBRIDGE_LV2_QT5 $(shell pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets) | ||||
| LINK_LV2_QT5_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs Qt5Core Qt5Gui Qt5Widgets) -ldl | LINK_LV2_QT5_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs Qt5Core Qt5Gui Qt5Widgets) -ldl | ||||
| BUILD_LV2_X11_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_X11 -DBRIDGE_LV2_X11 | |||||
| LINK_LV2_X11_FLAGS = $(LINK_FLAGS) -ldl | |||||
| BUILD_LV2_X11_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_X11 -DBRIDGE_LV2_X11 $(X11_FLAGS) | |||||
| LINK_LV2_X11_FLAGS = $(LINK_FLAGS) $(X11_LIBS) -ldl | |||||
| BUILD_LV2_COCOA_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_COCOA -DBRIDGE_LV2_COCOA | BUILD_LV2_COCOA_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_COCOA -DBRIDGE_LV2_COCOA | ||||
| LINK_LV2_COCOA_FLAGS = $(LINK_FLAGS) -ldl | LINK_LV2_COCOA_FLAGS = $(LINK_FLAGS) -ldl | ||||
| @@ -45,25 +45,25 @@ LINK_LV2_COCOA_FLAGS = $(LINK_FLAGS) -ldl | |||||
| BUILD_LV2_WINDOWS_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_HWND -DBRIDGE_LV2_HWND | BUILD_LV2_WINDOWS_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_HWND -DBRIDGE_LV2_HWND | ||||
| LINK_LV2_WINDOWS_FLAGS = $(LINK_FLAGS) -static -mwindows | LINK_LV2_WINDOWS_FLAGS = $(LINK_FLAGS) -static -mwindows | ||||
| BUILD_VST_X11_FLAGS = $(BUILD_VST_FLAGS) -DBRIDGE_X11 -DBRIDGE_VST_X11 | |||||
| LINK_VST_X11_FLAGS = $(LINK_FLAGS) -ldl | |||||
| BUILD_VST_X11_FLAGS = $(BUILD_VST_FLAGS) -DBRIDGE_X11 -DBRIDGE_VST_X11 $(X11_FLAGS) | |||||
| LINK_VST_X11_FLAGS = $(LINK_FLAGS) $(X11_LIBS) -ldl | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| ifeq ($(HAVE_GTK2),true) | ifeq ($(HAVE_GTK2),true) | ||||
| TARGETS += ui_lv2-gtk2 | |||||
| # TARGETS += ui_lv2-gtk2 | |||||
| endif | endif | ||||
| ifeq ($(HAVE_GTK3),true) | ifeq ($(HAVE_GTK3),true) | ||||
| TARGETS += ui_lv2-gtk3 | |||||
| # TARGETS += ui_lv2-gtk3 | |||||
| endif | endif | ||||
| ifeq ($(HAVE_QT4),true) | ifeq ($(HAVE_QT4),true) | ||||
| TARGETS += ui_lv2-qt4 | |||||
| # TARGETS += ui_lv2-qt4 | |||||
| endif | endif | ||||
| ifeq ($(HAVE_QT5),true) | ifeq ($(HAVE_QT5),true) | ||||
| TARGETS += ui_lv2-qt5 | |||||
| # TARGETS += ui_lv2-qt5 | |||||
| endif | endif | ||||
| ifeq ($(HAVE_X11),true) | ifeq ($(HAVE_X11),true) | ||||
| @@ -81,10 +81,7 @@ endif | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # all: $(TARGETS) | |||||
| # TODO | |||||
| all: | |||||
| all: $(TARGETS) | |||||
| ui_lv2-gtk2: ../../bin/carla-bridge-lv2-gtk2 | ui_lv2-gtk2: ../../bin/carla-bridge-lv2-gtk2 | ||||
| ui_lv2-gtk3: ../../bin/carla-bridge-lv2-gtk3 | ui_lv2-gtk3: ../../bin/carla-bridge-lv2-gtk3 | ||||
| @@ -237,7 +234,7 @@ OBJS_VST_X11 = \ | |||||
| CarlaBridgeToolkitPlugin__vst-x11.o \ | CarlaBridgeToolkitPlugin__vst-x11.o \ | ||||
| CarlaBridgeUI-VST__vst-x11.o \ | CarlaBridgeUI-VST__vst-x11.o \ | ||||
| ../../bin/carla-bridge-vst-x11: $(OBJS_VST_X11) $(OBJS_VST_LIBS) ../modules/theme.a | |||||
| ../../bin/carla-bridge-vst-x11: $(OBJS_VST_X11) $(OBJS_VST_LIBS) | |||||
| $(CXX) $^ $(LINK_VST_X11_FLAGS) -o $@ | $(CXX) $^ $(LINK_VST_X11_FLAGS) -o $@ | ||||
| %__vst-x11.o: %.cpp | %__vst-x11.o: %.cpp | ||||
| @@ -41,11 +41,11 @@ static int temporaryErrorHandler(Display*, XErrorEvent*) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| class X11PluginUi : public CarlaPluginUi | |||||
| class X11PluginUi : public CarlaPluginUI | |||||
| { | { | ||||
| public: | public: | ||||
| X11PluginUi(CloseCallback* const cb, const uintptr_t parentId) noexcept | X11PluginUi(CloseCallback* const cb, const uintptr_t parentId) noexcept | ||||
| : CarlaPluginUi(cb), | |||||
| : CarlaPluginUI(cb), | |||||
| fDisplay(nullptr), | fDisplay(nullptr), | ||||
| fWindow(0), | fWindow(0), | ||||
| fIsVisible(false), | fIsVisible(false), | ||||
| @@ -184,7 +184,7 @@ public: | |||||
| { | { | ||||
| fIsVisible = false; | fIsVisible = false; | ||||
| CARLA_SAFE_ASSERT_CONTINUE(fCallback != nullptr); | CARLA_SAFE_ASSERT_CONTINUE(fCallback != nullptr); | ||||
| fCallback->handlePluginUiClosed(); | |||||
| fCallback->handlePluginUIClosed(); | |||||
| } | } | ||||
| break; | break; | ||||
| @@ -193,7 +193,7 @@ public: | |||||
| { | { | ||||
| fIsVisible = false; | fIsVisible = false; | ||||
| CARLA_SAFE_ASSERT_CONTINUE(fCallback != nullptr); | CARLA_SAFE_ASSERT_CONTINUE(fCallback != nullptr); | ||||
| fCallback->handlePluginUiClosed(); | |||||
| fCallback->handlePluginUIClosed(); | |||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| @@ -298,7 +298,7 @@ private: | |||||
| // ----------------------------------------------------- | // ----------------------------------------------------- | ||||
| bool CarlaPluginUi::tryTransientWinIdMatch(const uintptr_t pid, const char* const uiTitle, const uintptr_t winId) | |||||
| bool CarlaPluginUI::tryTransientWinIdMatch(const uintptr_t pid, const char* const uiTitle, const uintptr_t winId) | |||||
| { | { | ||||
| CARLA_SAFE_ASSERT_RETURN(uiTitle != nullptr && uiTitle[0] != '\0', true); | CARLA_SAFE_ASSERT_RETURN(uiTitle != nullptr && uiTitle[0] != '\0', true); | ||||
| CARLA_SAFE_ASSERT_RETURN(winId != 0, true); | CARLA_SAFE_ASSERT_RETURN(winId != 0, true); | ||||
| @@ -456,7 +456,7 @@ bool CarlaPluginUi::tryTransientWinIdMatch(const uintptr_t pid, const char* cons | |||||
| // ----------------------------------------------------- | // ----------------------------------------------------- | ||||
| #ifdef CARLA_OS_MAC | #ifdef CARLA_OS_MAC | ||||
| CarlaPluginUi* CarlaPluginUi::newCocoa(CloseCallback*, uintptr_t) | |||||
| CarlaPluginUI* CarlaPluginUI::newCocoa(CloseCallback*, uintptr_t) | |||||
| { | { | ||||
| //return new CocoaPluginUi(cb, parentId); | //return new CocoaPluginUi(cb, parentId); | ||||
| return nullptr; | return nullptr; | ||||
| @@ -464,7 +464,7 @@ CarlaPluginUi* CarlaPluginUi::newCocoa(CloseCallback*, uintptr_t) | |||||
| #endif | #endif | ||||
| #ifdef CARLA_OS_WIN | #ifdef CARLA_OS_WIN | ||||
| CarlaPluginUi* CarlaPluginUi::newWindows(CloseCallback*, uintptr_t) | |||||
| CarlaPluginUI* CarlaPluginUI::newWindows(CloseCallback*, uintptr_t) | |||||
| { | { | ||||
| //return new WindowsPluginUi(cb, parentId); | //return new WindowsPluginUi(cb, parentId); | ||||
| return nullptr; | return nullptr; | ||||
| @@ -472,7 +472,7 @@ CarlaPluginUi* CarlaPluginUi::newWindows(CloseCallback*, uintptr_t) | |||||
| #endif | #endif | ||||
| #ifdef HAVE_X11 | #ifdef HAVE_X11 | ||||
| CarlaPluginUi* CarlaPluginUi::newX11(CloseCallback* cb, uintptr_t parentId) | |||||
| CarlaPluginUI* CarlaPluginUI::newX11(CloseCallback* cb, uintptr_t parentId) | |||||
| { | { | ||||
| return new X11PluginUi(cb, parentId); | return new X11PluginUi(cb, parentId); | ||||
| } | } | ||||
| @@ -22,16 +22,16 @@ | |||||
| // ----------------------------------------------------- | // ----------------------------------------------------- | ||||
| class CarlaPluginUi | |||||
| class CarlaPluginUI | |||||
| { | { | ||||
| public: | public: | ||||
| class CloseCallback { | class CloseCallback { | ||||
| public: | public: | ||||
| virtual ~CloseCallback() {} | virtual ~CloseCallback() {} | ||||
| virtual void handlePluginUiClosed() = 0; | |||||
| virtual void handlePluginUIClosed() = 0; | |||||
| }; | }; | ||||
| virtual ~CarlaPluginUi() {} | |||||
| virtual ~CarlaPluginUI() {} | |||||
| virtual void show() = 0; | virtual void show() = 0; | ||||
| virtual void hide() = 0; | virtual void hide() = 0; | ||||
| virtual void focus() = 0; | virtual void focus() = 0; | ||||
| @@ -47,19 +47,19 @@ public: | |||||
| static bool tryTransientWinIdMatch(const uintptr_t pid, const char* const uiTitle, const uintptr_t winId); | static bool tryTransientWinIdMatch(const uintptr_t pid, const char* const uiTitle, const uintptr_t winId); | ||||
| #ifdef CARLA_OS_MAC | #ifdef CARLA_OS_MAC | ||||
| static CarlaPluginUi* newCocoa(CloseCallback*, uintptr_t); | |||||
| static CarlaPluginUI* newCocoa(CloseCallback*, uintptr_t); | |||||
| #endif | #endif | ||||
| #ifdef CARLA_OS_WIN | #ifdef CARLA_OS_WIN | ||||
| static CarlaPluginUi* newWindows(CloseCallback*, uintptr_t); | |||||
| static CarlaPluginUI* newWindows(CloseCallback*, uintptr_t); | |||||
| #endif | #endif | ||||
| #ifdef HAVE_X11 | #ifdef HAVE_X11 | ||||
| static CarlaPluginUi* newX11(CloseCallback*, uintptr_t); | |||||
| static CarlaPluginUI* newX11(CloseCallback*, uintptr_t); | |||||
| #endif | #endif | ||||
| protected: | protected: | ||||
| bool fIsIdling; | bool fIsIdling; | ||||
| CloseCallback* fCallback; | CloseCallback* fCallback; | ||||
| CarlaPluginUi(CloseCallback* const cb) noexcept : fIsIdling(false), fCallback(cb) {} | |||||
| CarlaPluginUI(CloseCallback* const cb) noexcept : fIsIdling(false), fCallback(cb) {} | |||||
| }; | }; | ||||
| // ----------------------------------------------------- | // ----------------------------------------------------- | ||||