From 98a3b5a1a7dcfe3f9f1d11c3a63f54a55c83c19f Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 24 Oct 2012 21:22:09 +0100 Subject: [PATCH] Carla-backend: Add Prefer-Plugin-Bridges option (experimental) --- c++/carla-backend/carla_backend.h | 45 +++++++++++++++++------------- c++/carla-backend/carla_engine.cpp | 4 ++- c++/carla-backend/carla_shared.cpp | 6 ++++ c++/carla-backend/carla_shared.h | 2 ++ src/shared_carla.py | 39 +++++++++++++------------- 5 files changed, 57 insertions(+), 39 deletions(-) diff --git a/c++/carla-backend/carla_backend.h b/c++/carla-backend/carla_backend.h index 3d93713..aff5274 100644 --- a/c++/carla-backend/carla_backend.h +++ b/c++/carla-backend/carla_backend.h @@ -246,119 +246,126 @@ enum OptionsType { */ OPTION_USE_DSSI_VST_CHUNKS = 7, + /*! + * Use plugin bridges whenever possible.\n + * Default is no, and not recommended at this point!. + * EXPERIMENTAL! + */ + OPTION_PREFER_PLUGIN_BRIDGES = 8, + /*! * Use OSC-UI bridges whenever possible, otherwise UIs will be handled in the main thread.\n * Default is yes. */ - OPTION_PREFER_UI_BRIDGES = 8, + OPTION_PREFER_UI_BRIDGES = 9, /*! * Timeout value in ms for how much to wait for OSC-UIs to respond.\n * Default is 4000 ms (4 secs). */ - OPTION_OSC_UI_TIMEOUT = 9, + OPTION_OSC_UI_TIMEOUT = 10, /*! * Set LADSPA_PATH environment variable.\n * Default undefined. */ - OPTION_PATH_LADSPA = 10, + OPTION_PATH_LADSPA = 11, /*! * Set DSSI_PATH environment variable.\n * Default undefined. */ - OPTION_PATH_DSSI = 11, + OPTION_PATH_DSSI = 12, /*! * Set LV2_PATH environment variable.\n * Default undefined. */ - OPTION_PATH_LV2 = 12, + OPTION_PATH_LV2 = 13, /*! * Set VST_PATH environment variable.\n * Default undefined. */ - OPTION_PATH_VST = 13, + OPTION_PATH_VST = 14, /*! * Set GIG_PATH environment variable.\n * Default undefined. */ - OPTION_PATH_GIG = 14, + OPTION_PATH_GIG = 15, /*! * Set SF2_PATH environment variable.\n * Default undefined. */ - OPTION_PATH_SF2 = 15, + OPTION_PATH_SF2 = 16, /*! * Set SFZ_PATH environment variable.\n * Default undefined. */ - OPTION_PATH_SFZ = 16, + OPTION_PATH_SFZ = 17, /*! * Set path to the POSIX 32bit plugin bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_POSIX32 = 17, + OPTION_PATH_BRIDGE_POSIX32 = 18, /*! * Set path to the POSIX 64bit plugin bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_POSIX64 = 18, + OPTION_PATH_BRIDGE_POSIX64 = 19, /*! * Set path to the Windows 32bit plugin bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_WIN32 = 19, + OPTION_PATH_BRIDGE_WIN32 = 20, /*! * Set path to the Windows 64bit plugin bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_WIN64 = 20, + OPTION_PATH_BRIDGE_WIN64 = 21, /*! * Set path to the LV2 Gtk2 UI bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_LV2_GTK2 = 21, + OPTION_PATH_BRIDGE_LV2_GTK2 = 22, /*! * Set path to the LV2 Gtk3 UI bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_LV2_GTK3 = 22, + OPTION_PATH_BRIDGE_LV2_GTK3 = 23, /*! * Set path to the LV2 Qt4 UI bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_LV2_QT4 = 23, + OPTION_PATH_BRIDGE_LV2_QT4 = 24, /*! * Set path to the LV2 X11 UI bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_LV2_X11 = 24, + OPTION_PATH_BRIDGE_LV2_X11 = 25, /*! * Set path to the VST HWND UI bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_VST_HWND = 25, + OPTION_PATH_BRIDGE_VST_HWND = 26, /*! * Set path to the VST X11 UI bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_VST_X11 = 26 + OPTION_PATH_BRIDGE_VST_X11 = 27 }; /*! diff --git a/c++/carla-backend/carla_engine.cpp b/c++/carla-backend/carla_engine.cpp index 8dfa34c..71c7338 100644 --- a/c++/carla-backend/carla_engine.cpp +++ b/c++/carla-backend/carla_engine.cpp @@ -245,11 +245,13 @@ short CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, con CARLA_ASSERT(label); if (m_maxPluginNumber == 0) + { #ifdef BUILD_BRIDGE m_maxPluginNumber = MAX_PLUGINS; #else m_maxPluginNumber = (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) ? 16 : MAX_PLUGINS; #endif + } CarlaPlugin::initializer init = { this, @@ -261,7 +263,7 @@ short CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, con CarlaPlugin* plugin = nullptr; #ifndef BUILD_BRIDGE - if (btype != BINARY_NATIVE /*|| true*/) + if (btype != BINARY_NATIVE || carlaOptions.preferPluginBridges) { # ifdef CARLA_ENGINE_JACK if (carlaOptions.processMode != CarlaBackend::PROCESS_MODE_MULTIPLE_CLIENTS) diff --git a/c++/carla-backend/carla_shared.cpp b/c++/carla-backend/carla_shared.cpp index ecdf1cf..4d1fe27 100644 --- a/c++/carla-backend/carla_shared.cpp +++ b/c++/carla-backend/carla_shared.cpp @@ -224,6 +224,8 @@ const char* OptionsType2str(const OptionsType type) return "OPTION_FORCE_STEREO"; case OPTION_USE_DSSI_VST_CHUNKS: return "OPTION_USE_DSSI_VST_CHUNKS"; + case OPTION_PREFER_PLUGIN_BRIDGES: + return "OPTION_PREFER_PLUGIN_BRIDGES"; case OPTION_PREFER_UI_BRIDGES: return "OPTION_PREFER_UI_BRIDGES"; case OPTION_OSC_UI_TIMEOUT: @@ -574,6 +576,9 @@ void setOption(const OptionsType option, const int value, const char* const valu case OPTION_USE_DSSI_VST_CHUNKS: carlaOptions.useDssiVstChunks = value; break; + case OPTION_PREFER_PLUGIN_BRIDGES: + carlaOptions.preferPluginBridges = value; + break; case OPTION_PREFER_UI_BRIDGES: carlaOptions.preferUiBridges = value; break; @@ -675,6 +680,7 @@ void resetOptions() carlaOptions.preferredSampleRate = 44100; carlaOptions.forceStereo = false; carlaOptions.useDssiVstChunks = false; + carlaOptions.preferPluginBridges = false; carlaOptions.preferUiBridges = true; carlaOptions.oscUiTimeout = 4000/100; diff --git a/c++/carla-backend/carla_shared.h b/c++/carla-backend/carla_shared.h index 079ed13..c994458 100644 --- a/c++/carla-backend/carla_shared.h +++ b/c++/carla-backend/carla_shared.h @@ -68,6 +68,7 @@ struct carla_options_t { bool forceStereo; bool useDssiVstChunks; + bool preferPluginBridges; bool preferUiBridges; uint oscUiTimeout; @@ -90,6 +91,7 @@ struct carla_options_t { preferredSampleRate(44100), forceStereo(false), useDssiVstChunks(false), + preferPluginBridges(false), preferUiBridges(true), oscUiTimeout(4000/100), bridge_posix32(nullptr), diff --git a/src/shared_carla.py b/src/shared_carla.py index c05b7c9..ad9ea0c 100644 --- a/src/shared_carla.py +++ b/src/shared_carla.py @@ -152,25 +152,26 @@ OPTION_PREFERRED_BUFFER_SIZE = 4 OPTION_PREFERRED_SAMPLE_RATE = 5 OPTION_FORCE_STEREO = 6 OPTION_USE_DSSI_VST_CHUNKS = 7 -OPTION_PREFER_UI_BRIDGES = 8 -OPTION_OSC_UI_TIMEOUT = 9 -OPTION_PATH_LADSPA = 10 -OPTION_PATH_DSSI = 11 -OPTION_PATH_LV2 = 12 -OPTION_PATH_VST = 13 -OPTION_PATH_GIG = 14 -OPTION_PATH_SF2 = 15 -OPTION_PATH_SFZ = 16 -OPTION_PATH_BRIDGE_POSIX32 = 17 -OPTION_PATH_BRIDGE_POSIX64 = 18 -OPTION_PATH_BRIDGE_WIN32 = 19 -OPTION_PATH_BRIDGE_WIN64 = 20 -OPTION_PATH_BRIDGE_LV2_GTK2 = 21 -OPTION_PATH_BRIDGE_LV2_GTK3 = 22 -OPTION_PATH_BRIDGE_LV2_QT4 = 23 -OPTION_PATH_BRIDGE_LV2_X11 = 24 -OPTION_PATH_BRIDGE_VST_HWND = 25 -OPTION_PATH_BRIDGE_VST_X11 = 26 +OPTION_PREFER_PLUGIN_BRIDGES = 8 +OPTION_PREFER_UI_BRIDGES = 9 +OPTION_OSC_UI_TIMEOUT = 10 +OPTION_PATH_LADSPA = 11 +OPTION_PATH_DSSI = 12 +OPTION_PATH_LV2 = 13 +OPTION_PATH_VST = 14 +OPTION_PATH_GIG = 15 +OPTION_PATH_SF2 = 16 +OPTION_PATH_SFZ = 17 +OPTION_PATH_BRIDGE_POSIX32 = 18 +OPTION_PATH_BRIDGE_POSIX64 = 19 +OPTION_PATH_BRIDGE_WIN32 = 20 +OPTION_PATH_BRIDGE_WIN64 = 21 +OPTION_PATH_BRIDGE_LV2_GTK2 = 22 +OPTION_PATH_BRIDGE_LV2_GTK3 = 23 +OPTION_PATH_BRIDGE_LV2_QT4 = 24 +OPTION_PATH_BRIDGE_LV2_X11 = 25 +OPTION_PATH_BRIDGE_VST_HWND = 26 +OPTION_PATH_BRIDGE_VST_X11 = 27 # enum CallbackType CALLBACK_DEBUG = 0