Signed-off-by: falkTX <falktx@falktx.com>tags/v2.1-rc1
@@ -985,6 +985,13 @@ | |||||
</property> | </property> | ||||
</spacer> | </spacer> | ||||
</item> | </item> | ||||
<item row="3" column="0" colspan="4"> | |||||
<widget class="QCheckBox" name="cb_engine_reset_xruns"> | |||||
<property name="text"> | |||||
<string>Reset Xrun counter after project load</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
</layout> | </layout> | ||||
</widget> | </widget> | ||||
</item> | </item> | ||||
@@ -1260,46 +1260,51 @@ typedef enum { | |||||
*/ | */ | ||||
ENGINE_OPTION_MAX_PARAMETERS = 7, | ENGINE_OPTION_MAX_PARAMETERS = 7, | ||||
/*! | |||||
* Reset Xrun counter after project load. | |||||
*/ | |||||
ENGINE_OPTION_RESET_XRUNS = 8, | |||||
/*! | /*! | ||||
* Timeout value for how much to wait for UI bridges to respond, in milliseconds. | * Timeout value for how much to wait for UI bridges to respond, in milliseconds. | ||||
* Default is 4000 (4 seconds). | * Default is 4000 (4 seconds). | ||||
*/ | */ | ||||
ENGINE_OPTION_UI_BRIDGES_TIMEOUT = 8, | |||||
ENGINE_OPTION_UI_BRIDGES_TIMEOUT = 9, | |||||
/*! | /*! | ||||
* Audio buffer size. | * Audio buffer size. | ||||
* Default is 512. | * Default is 512. | ||||
*/ | */ | ||||
ENGINE_OPTION_AUDIO_BUFFER_SIZE = 9, | |||||
ENGINE_OPTION_AUDIO_BUFFER_SIZE = 10, | |||||
/*! | /*! | ||||
* Audio sample rate. | * Audio sample rate. | ||||
* Default is 44100. | * Default is 44100. | ||||
*/ | */ | ||||
ENGINE_OPTION_AUDIO_SAMPLE_RATE = 10, | |||||
ENGINE_OPTION_AUDIO_SAMPLE_RATE = 11, | |||||
/*! | /*! | ||||
* Wherever to use 3 audio periods instead of the default 2. | * Wherever to use 3 audio periods instead of the default 2. | ||||
* Default is false. | * Default is false. | ||||
*/ | */ | ||||
ENGINE_OPTION_AUDIO_TRIPLE_BUFFER = 11, | |||||
ENGINE_OPTION_AUDIO_TRIPLE_BUFFER = 12, | |||||
/*! | /*! | ||||
* Audio driver. | * Audio driver. | ||||
* Default depends on platform. | * Default depends on platform. | ||||
*/ | */ | ||||
ENGINE_OPTION_AUDIO_DRIVER = 12, | |||||
ENGINE_OPTION_AUDIO_DRIVER = 13, | |||||
/*! | /*! | ||||
* Audio device (within a driver). | * Audio device (within a driver). | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
ENGINE_OPTION_AUDIO_DEVICE = 13, | |||||
ENGINE_OPTION_AUDIO_DEVICE = 14, | |||||
/*! | /*! | ||||
* Wherever to enable OSC support in the engine. | * Wherever to enable OSC support in the engine. | ||||
*/ | */ | ||||
ENGINE_OPTION_OSC_ENABLED = 14, | |||||
ENGINE_OPTION_OSC_ENABLED = 15, | |||||
/*! | /*! | ||||
* The network TCP port to use for OSC. | * The network TCP port to use for OSC. | ||||
@@ -1307,7 +1312,7 @@ typedef enum { | |||||
* A value of < 0 means to not enable the TCP port for OSC. | * A value of < 0 means to not enable the TCP port for OSC. | ||||
* @note Valid ports begin at 1024 and end at 32767 (inclusive) | * @note Valid ports begin at 1024 and end at 32767 (inclusive) | ||||
*/ | */ | ||||
ENGINE_OPTION_OSC_PORT_TCP = 15, | |||||
ENGINE_OPTION_OSC_PORT_TCP = 16, | |||||
/*! | /*! | ||||
* The network UDP port to use for OSC. | * The network UDP port to use for OSC. | ||||
@@ -1316,87 +1321,87 @@ typedef enum { | |||||
* @note Disabling this option prevents DSSI UIs from working! | * @note Disabling this option prevents DSSI UIs from working! | ||||
* @note Valid ports begin at 1024 and end at 32767 (inclusive) | * @note Valid ports begin at 1024 and end at 32767 (inclusive) | ||||
*/ | */ | ||||
ENGINE_OPTION_OSC_PORT_UDP = 16, | |||||
ENGINE_OPTION_OSC_PORT_UDP = 17, | |||||
/*! | /*! | ||||
* Set path used for a specific file type. | * Set path used for a specific file type. | ||||
* Uses value as the file format, valueStr as actual path. | * Uses value as the file format, valueStr as actual path. | ||||
*/ | */ | ||||
ENGINE_OPTION_FILE_PATH = 17, | |||||
ENGINE_OPTION_FILE_PATH = 18, | |||||
/*! | /*! | ||||
* Set path used for a specific plugin type. | * Set path used for a specific plugin type. | ||||
* Uses value as the plugin format, valueStr as actual path. | * Uses value as the plugin format, valueStr as actual path. | ||||
* @see PluginType | * @see PluginType | ||||
*/ | */ | ||||
ENGINE_OPTION_PLUGIN_PATH = 18, | |||||
ENGINE_OPTION_PLUGIN_PATH = 19, | |||||
/*! | /*! | ||||
* Set path to the binary files. | * Set path to the binary files. | ||||
* Default unset. | * Default unset. | ||||
* @note Must be set for plugin and UI bridges to work | * @note Must be set for plugin and UI bridges to work | ||||
*/ | */ | ||||
ENGINE_OPTION_PATH_BINARIES = 19, | |||||
ENGINE_OPTION_PATH_BINARIES = 20, | |||||
/*! | /*! | ||||
* Set path to the resource files. | * Set path to the resource files. | ||||
* Default unset. | * Default unset. | ||||
* @note Must be set for some internal plugins to work | * @note Must be set for some internal plugins to work | ||||
*/ | */ | ||||
ENGINE_OPTION_PATH_RESOURCES = 20, | |||||
ENGINE_OPTION_PATH_RESOURCES = 21, | |||||
/*! | /*! | ||||
* Prevent bad plugin and UI behaviour. | * Prevent bad plugin and UI behaviour. | ||||
* @note: Linux only | * @note: Linux only | ||||
*/ | */ | ||||
ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR = 21, | |||||
ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR = 22, | |||||
/*! | /*! | ||||
* Set UI scaling used in frontend, so backend can do the same for plugin UIs. | * Set UI scaling used in frontend, so backend can do the same for plugin UIs. | ||||
*/ | */ | ||||
ENGINE_OPTION_FRONTEND_UI_SCALE = 22, | |||||
ENGINE_OPTION_FRONTEND_UI_SCALE = 23, | |||||
/*! | /*! | ||||
* Set frontend winId, used to define as parent window for plugin UIs. | * Set frontend winId, used to define as parent window for plugin UIs. | ||||
*/ | */ | ||||
ENGINE_OPTION_FRONTEND_WIN_ID = 23, | |||||
ENGINE_OPTION_FRONTEND_WIN_ID = 24, | |||||
#if !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) && !defined(CARLA_OS_WIN) | #if !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) && !defined(CARLA_OS_WIN) | ||||
/*! | /*! | ||||
* Set path to wine executable. | * Set path to wine executable. | ||||
*/ | */ | ||||
ENGINE_OPTION_WINE_EXECUTABLE = 24, | |||||
ENGINE_OPTION_WINE_EXECUTABLE = 25, | |||||
/*! | /*! | ||||
* Enable automatic wineprefix detection. | * Enable automatic wineprefix detection. | ||||
*/ | */ | ||||
ENGINE_OPTION_WINE_AUTO_PREFIX = 25, | |||||
ENGINE_OPTION_WINE_AUTO_PREFIX = 26, | |||||
/*! | /*! | ||||
* Fallback wineprefix to use if automatic detection fails or is disabled, and WINEPREFIX is not set. | * Fallback wineprefix to use if automatic detection fails or is disabled, and WINEPREFIX is not set. | ||||
*/ | */ | ||||
ENGINE_OPTION_WINE_FALLBACK_PREFIX = 26, | |||||
ENGINE_OPTION_WINE_FALLBACK_PREFIX = 27, | |||||
/*! | /*! | ||||
* Enable realtime priority for Wine application and server threads. | * Enable realtime priority for Wine application and server threads. | ||||
*/ | */ | ||||
ENGINE_OPTION_WINE_RT_PRIO_ENABLED = 27, | |||||
ENGINE_OPTION_WINE_RT_PRIO_ENABLED = 28, | |||||
/*! | /*! | ||||
* Base realtime priority for Wine threads. | * Base realtime priority for Wine threads. | ||||
*/ | */ | ||||
ENGINE_OPTION_WINE_BASE_RT_PRIO = 28, | |||||
ENGINE_OPTION_WINE_BASE_RT_PRIO = 29, | |||||
/*! | /*! | ||||
* Wine server realtime priority. | * Wine server realtime priority. | ||||
*/ | */ | ||||
ENGINE_OPTION_WINE_SERVER_RT_PRIO = 29, | |||||
ENGINE_OPTION_WINE_SERVER_RT_PRIO = 30, | |||||
#endif | #endif | ||||
/*! | /*! | ||||
* Capture console output into debug callbacks. | * Capture console output into debug callbacks. | ||||
*/ | */ | ||||
ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT = 30 | |||||
ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT = 31 | |||||
} EngineOption; | } EngineOption; | ||||
@@ -235,6 +235,7 @@ struct CARLA_API EngineOptions { | |||||
const char* transportExtra; | const char* transportExtra; | ||||
bool forceStereo; | bool forceStereo; | ||||
bool resetXruns; | |||||
bool preferPluginBridges; | bool preferPluginBridges; | ||||
bool preferUiBridges; | bool preferUiBridges; | ||||
bool uisAlwaysOnTop; | bool uisAlwaysOnTop; | ||||
@@ -189,21 +189,24 @@ static void carla_engine_init_common(CarlaEngine* const engine) | |||||
#ifdef BUILD_BRIDGE | #ifdef BUILD_BRIDGE | ||||
/* | /* | ||||
if (const char* const uisAlwaysOnTop = std::getenv("ENGINE_OPTION_FORCE_STEREO")) | |||||
engine->setOption(CB::ENGINE_OPTION_FORCE_STEREO, (std::strcmp(uisAlwaysOnTop, "true") == 0) ? 1 : 0, nullptr); | |||||
if (const char* const forceStereo = std::getenv("ENGINE_OPTION_FORCE_STEREO")) | |||||
engine->setOption(CB::ENGINE_OPTION_FORCE_STEREO, (std::strcmp(forceStereo, "true") == 0) ? 1 : 0, nullptr); | |||||
if (const char* const uisAlwaysOnTop = std::getenv("ENGINE_OPTION_PREFER_PLUGIN_BRIDGES")) | |||||
engine->setOption(CB::ENGINE_OPTION_PREFER_PLUGIN_BRIDGES, (std::strcmp(uisAlwaysOnTop, "true") == 0) ? 1 : 0, nullptr); | |||||
if (const char* const preferPluginBridges = std::getenv("ENGINE_OPTION_PREFER_PLUGIN_BRIDGES")) | |||||
engine->setOption(CB::ENGINE_OPTION_PREFER_PLUGIN_BRIDGES, (std::strcmp(preferPluginBridges, "true") == 0) ? 1 : 0, nullptr); | |||||
if (const char* const uisAlwaysOnTop = std::getenv("ENGINE_OPTION_PREFER_UI_BRIDGES")) | |||||
engine->setOption(CB::ENGINE_OPTION_PREFER_UI_BRIDGES, (std::strcmp(uisAlwaysOnTop, "true") == 0) ? 1 : 0, nullptr); | |||||
if (const char* const preferUiBridges = std::getenv("ENGINE_OPTION_PREFER_UI_BRIDGES")) | |||||
engine->setOption(CB::ENGINE_OPTION_PREFER_UI_BRIDGES, (std::strcmp(preferUiBridges, "true") == 0) ? 1 : 0, nullptr); | |||||
*/ | */ | ||||
if (const char* const uisAlwaysOnTop = std::getenv("ENGINE_OPTION_UIS_ALWAYS_ON_TOP")) | if (const char* const uisAlwaysOnTop = std::getenv("ENGINE_OPTION_UIS_ALWAYS_ON_TOP")) | ||||
engine->setOption(CB::ENGINE_OPTION_UIS_ALWAYS_ON_TOP, (std::strcmp(uisAlwaysOnTop, "true") == 0) ? 1 : 0, nullptr); | engine->setOption(CB::ENGINE_OPTION_UIS_ALWAYS_ON_TOP, (std::strcmp(uisAlwaysOnTop, "true") == 0) ? 1 : 0, nullptr); | ||||
if (const char* const maxParameters = std::getenv("ENGINE_OPTION_MAX_PARAMETERS")) | if (const char* const maxParameters = std::getenv("ENGINE_OPTION_MAX_PARAMETERS")) | ||||
engine->setOption(CB::ENGINE_OPTION_MAX_PARAMETERS, std::atoi(maxParameters), nullptr); | |||||
engine->setOption(CB::ENGINE_OPTION_MAX_PARAMETERS, std::atoi(maxParameters), nullptr); | |||||
if (const char* const resetXruns = std::getenv("ENGINE_OPTION_RESET_XRUNS")) | |||||
engine->setOption(CB::ENGINE_OPTION_RESET_XRUNS, (std::strcmp(resetXruns, "true") == 0) ? 1 : 0, nullptr); | |||||
if (const char* const uiBridgesTimeout = std::getenv("ENGINE_OPTION_UI_BRIDGES_TIMEOUT")) | if (const char* const uiBridgesTimeout = std::getenv("ENGINE_OPTION_UI_BRIDGES_TIMEOUT")) | ||||
engine->setOption(CB::ENGINE_OPTION_UI_BRIDGES_TIMEOUT, std::atoi(uiBridgesTimeout), nullptr); | engine->setOption(CB::ENGINE_OPTION_UI_BRIDGES_TIMEOUT, std::atoi(uiBridgesTimeout), nullptr); | ||||
@@ -236,14 +239,14 @@ static void carla_engine_init_common(CarlaEngine* const engine) | |||||
engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_SFZ, pathSFZ); | engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_SFZ, pathSFZ); | ||||
if (const char* const binaryDir = std::getenv("ENGINE_OPTION_PATH_BINARIES")) | if (const char* const binaryDir = std::getenv("ENGINE_OPTION_PATH_BINARIES")) | ||||
engine->setOption(CB::ENGINE_OPTION_PATH_BINARIES, 0, binaryDir); | |||||
engine->setOption(CB::ENGINE_OPTION_PATH_BINARIES, 0, binaryDir); | |||||
else | else | ||||
engine->setOption(CB::ENGINE_OPTION_PATH_BINARIES, 0, waterBinaryDir.getFullPathName().toRawUTF8()); | |||||
engine->setOption(CB::ENGINE_OPTION_PATH_BINARIES, 0, waterBinaryDir.getFullPathName().toRawUTF8()); | |||||
if (const char* const resourceDir = std::getenv("ENGINE_OPTION_PATH_RESOURCES")) | if (const char* const resourceDir = std::getenv("ENGINE_OPTION_PATH_RESOURCES")) | ||||
engine->setOption(CB::ENGINE_OPTION_PATH_RESOURCES, 0, resourceDir); | |||||
engine->setOption(CB::ENGINE_OPTION_PATH_RESOURCES, 0, resourceDir); | |||||
else | else | ||||
engine->setOption(CB::ENGINE_OPTION_PATH_RESOURCES, 0, waterBinaryDir.getChildFile("resources").getFullPathName().toRawUTF8()); | |||||
engine->setOption(CB::ENGINE_OPTION_PATH_RESOURCES, 0, waterBinaryDir.getChildFile("resources").getFullPathName().toRawUTF8()); | |||||
if (const char* const preventBadBehaviour = std::getenv("ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR")) | if (const char* const preventBadBehaviour = std::getenv("ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR")) | ||||
engine->setOption(CB::ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR, (std::strcmp(preventBadBehaviour, "true") == 0) ? 1 : 0, nullptr); | engine->setOption(CB::ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR, (std::strcmp(preventBadBehaviour, "true") == 0) ? 1 : 0, nullptr); | ||||
@@ -256,6 +259,7 @@ static void carla_engine_init_common(CarlaEngine* const engine) | |||||
engine->setOption(CB::ENGINE_OPTION_PREFER_UI_BRIDGES, gStandalone.engineOptions.preferUiBridges ? 1 : 0, nullptr); | engine->setOption(CB::ENGINE_OPTION_PREFER_UI_BRIDGES, gStandalone.engineOptions.preferUiBridges ? 1 : 0, nullptr); | ||||
engine->setOption(CB::ENGINE_OPTION_UIS_ALWAYS_ON_TOP, gStandalone.engineOptions.uisAlwaysOnTop ? 1 : 0, nullptr); | engine->setOption(CB::ENGINE_OPTION_UIS_ALWAYS_ON_TOP, gStandalone.engineOptions.uisAlwaysOnTop ? 1 : 0, nullptr); | ||||
engine->setOption(CB::ENGINE_OPTION_MAX_PARAMETERS, static_cast<int>(gStandalone.engineOptions.maxParameters), nullptr); | engine->setOption(CB::ENGINE_OPTION_MAX_PARAMETERS, static_cast<int>(gStandalone.engineOptions.maxParameters), nullptr); | ||||
engine->setOption(CB::ENGINE_OPTION_RESET_XRUNS, gStandalone.engineOptions.resetXruns ? 1 : 0, nullptr); | |||||
engine->setOption(CB::ENGINE_OPTION_UI_BRIDGES_TIMEOUT, static_cast<int>(gStandalone.engineOptions.uiBridgesTimeout), nullptr); | engine->setOption(CB::ENGINE_OPTION_UI_BRIDGES_TIMEOUT, static_cast<int>(gStandalone.engineOptions.uiBridgesTimeout), nullptr); | ||||
engine->setOption(CB::ENGINE_OPTION_AUDIO_BUFFER_SIZE, static_cast<int>(gStandalone.engineOptions.audioBufferSize), nullptr); | engine->setOption(CB::ENGINE_OPTION_AUDIO_BUFFER_SIZE, static_cast<int>(gStandalone.engineOptions.audioBufferSize), nullptr); | ||||
engine->setOption(CB::ENGINE_OPTION_AUDIO_SAMPLE_RATE, static_cast<int>(gStandalone.engineOptions.audioSampleRate), nullptr); | engine->setOption(CB::ENGINE_OPTION_AUDIO_SAMPLE_RATE, static_cast<int>(gStandalone.engineOptions.audioSampleRate), nullptr); | ||||
@@ -409,15 +413,19 @@ bool carla_engine_init(const char* driverName, const char* clientName) | |||||
} | } | ||||
#ifdef BUILD_BRIDGE | #ifdef BUILD_BRIDGE | ||||
bool carla_engine_init_bridge(const char audioBaseName[6+1], const char rtClientBaseName[6+1], const char nonRtClientBaseName[6+1], | |||||
const char nonRtServerBaseName[6+1], const char* clientName) | |||||
bool carla_engine_init_bridge(const char audioBaseName[6+1], | |||||
const char rtClientBaseName[6+1], | |||||
const char nonRtClientBaseName[6+1], | |||||
const char nonRtServerBaseName[6+1], | |||||
const char* const clientName) | |||||
{ | { | ||||
CARLA_SAFE_ASSERT_RETURN(audioBaseName != nullptr && audioBaseName[0] != '\0', false); | CARLA_SAFE_ASSERT_RETURN(audioBaseName != nullptr && audioBaseName[0] != '\0', false); | ||||
CARLA_SAFE_ASSERT_RETURN(rtClientBaseName != nullptr && rtClientBaseName[0] != '\0', false); | CARLA_SAFE_ASSERT_RETURN(rtClientBaseName != nullptr && rtClientBaseName[0] != '\0', false); | ||||
CARLA_SAFE_ASSERT_RETURN(nonRtClientBaseName != nullptr && nonRtClientBaseName[0] != '\0', false); | CARLA_SAFE_ASSERT_RETURN(nonRtClientBaseName != nullptr && nonRtClientBaseName[0] != '\0', false); | ||||
CARLA_SAFE_ASSERT_RETURN(nonRtServerBaseName != nullptr && nonRtServerBaseName[0] != '\0', false); | CARLA_SAFE_ASSERT_RETURN(nonRtServerBaseName != nullptr && nonRtServerBaseName[0] != '\0', false); | ||||
CARLA_SAFE_ASSERT_RETURN(clientName != nullptr && clientName[0] != '\0', false); | CARLA_SAFE_ASSERT_RETURN(clientName != nullptr && clientName[0] != '\0', false); | ||||
carla_debug("carla_engine_init_bridge(\"%s\", \"%s\", \"%s\", \"%s\", \"%s\")", audioBaseName, rtClientBaseName, nonRtClientBaseName, nonRtServerBaseName, clientName); | |||||
carla_debug("carla_engine_init_bridge(\"%s\", \"%s\", \"%s\", \"%s\", \"%s\")", | |||||
audioBaseName, rtClientBaseName, nonRtClientBaseName, nonRtServerBaseName, clientName); | |||||
CARLA_SAFE_ASSERT_WITH_LAST_ERROR_RETURN(gStandalone.engine == nullptr, "Engine is already initialized", false); | CARLA_SAFE_ASSERT_WITH_LAST_ERROR_RETURN(gStandalone.engine == nullptr, "Engine is already initialized", false); | ||||
@@ -694,6 +702,11 @@ void carla_set_engine_option(EngineOption option, int value, const char* valueSt | |||||
gStandalone.engineOptions.maxParameters = static_cast<uint>(value); | gStandalone.engineOptions.maxParameters = static_cast<uint>(value); | ||||
break; | break; | ||||
case CB::ENGINE_OPTION_RESET_XRUNS: | |||||
CARLA_SAFE_ASSERT_RETURN(value == 0 || value == 1,); | |||||
gStandalone.engineOptions.resetXruns = (value != 0); | |||||
break; | |||||
case CB::ENGINE_OPTION_UI_BRIDGES_TIMEOUT: | case CB::ENGINE_OPTION_UI_BRIDGES_TIMEOUT: | ||||
CARLA_SAFE_ASSERT_RETURN(value >= 0,); | CARLA_SAFE_ASSERT_RETURN(value >= 0,); | ||||
gStandalone.engineOptions.uiBridgesTimeout = static_cast<uint>(value); | gStandalone.engineOptions.uiBridgesTimeout = static_cast<uint>(value); | ||||
@@ -1704,6 +1704,11 @@ void CarlaEngine::setOption(const EngineOption option, const int value, const ch | |||||
pData->options.maxParameters = static_cast<uint>(value); | pData->options.maxParameters = static_cast<uint>(value); | ||||
break; | break; | ||||
case ENGINE_OPTION_RESET_XRUNS: | |||||
CARLA_SAFE_ASSERT_RETURN(value == 0 || value == 1,); | |||||
pData->options.resetXruns = (value != 0); | |||||
break; | |||||
case ENGINE_OPTION_UI_BRIDGES_TIMEOUT: | case ENGINE_OPTION_UI_BRIDGES_TIMEOUT: | ||||
CARLA_SAFE_ASSERT_RETURN(value >= 0,); | CARLA_SAFE_ASSERT_RETURN(value >= 0,); | ||||
pData->options.uiBridgesTimeout = static_cast<uint>(value); | pData->options.uiBridgesTimeout = static_cast<uint>(value); | ||||
@@ -2881,6 +2886,9 @@ bool CarlaEngine::loadProjectInternal(water::XmlDocument& xmlDoc) | |||||
} | } | ||||
#endif | #endif | ||||
if (pData->options.resetXruns) | |||||
clearXruns(); | |||||
callback(true, true, ENGINE_CALLBACK_PROJECT_LOAD_FINISHED, 0, 0, 0, 0, 0.0f, nullptr); | callback(true, true, ENGINE_CALLBACK_PROJECT_LOAD_FINISHED, 0, 0, 0, 0, 0.0f, nullptr); | ||||
callback(true, true, ENGINE_CALLBACK_CANCELABLE_ACTION, 0, 0, 0, 0, 0.0f, "Loading project"); | callback(true, true, ENGINE_CALLBACK_CANCELABLE_ACTION, 0, 0, 0, 0, 0.0f, "Loading project"); | ||||
return true; | return true; | ||||
@@ -184,6 +184,7 @@ EngineOptions::EngineOptions() noexcept | |||||
#endif | #endif | ||||
transportExtra(nullptr), | transportExtra(nullptr), | ||||
forceStereo(false), | forceStereo(false), | ||||
resetXruns(false), | |||||
preferPluginBridges(false), | preferPluginBridges(false), | ||||
#if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN) | #if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN) | ||||
preferUiBridges(false), | preferUiBridges(false), | ||||
@@ -893,95 +893,98 @@ ENGINE_OPTION_UIS_ALWAYS_ON_TOP = 6 | |||||
# Default is MAX_DEFAULT_PARAMETERS. | # Default is MAX_DEFAULT_PARAMETERS. | ||||
ENGINE_OPTION_MAX_PARAMETERS = 7 | ENGINE_OPTION_MAX_PARAMETERS = 7 | ||||
# Reset Xrun counter after project load. | |||||
ENGINE_OPTION_RESET_XRUNS = 8 | |||||
# Timeout value for how much to wait for UI bridges to respond, in milliseconds. | # Timeout value for how much to wait for UI bridges to respond, in milliseconds. | ||||
# Default is 4000 (4 seconds). | # Default is 4000 (4 seconds). | ||||
ENGINE_OPTION_UI_BRIDGES_TIMEOUT = 8 | |||||
ENGINE_OPTION_UI_BRIDGES_TIMEOUT = 9 | |||||
# Audio buffer size. | # Audio buffer size. | ||||
# Default is 512. | # Default is 512. | ||||
ENGINE_OPTION_AUDIO_BUFFER_SIZE = 9 | |||||
ENGINE_OPTION_AUDIO_BUFFER_SIZE = 10 | |||||
# Audio sample rate. | # Audio sample rate. | ||||
# Default is 44100. | # Default is 44100. | ||||
ENGINE_OPTION_AUDIO_SAMPLE_RATE = 10 | |||||
ENGINE_OPTION_AUDIO_SAMPLE_RATE = 11 | |||||
# Wherever to use 3 audio periods instead of the default 2. | # Wherever to use 3 audio periods instead of the default 2. | ||||
# Default is false. | # Default is false. | ||||
ENGINE_OPTION_AUDIO_TRIPLE_BUFFER = 11 | |||||
ENGINE_OPTION_AUDIO_TRIPLE_BUFFER = 12 | |||||
# Audio driver. | # Audio driver. | ||||
# Default dppends on platform. | # Default dppends on platform. | ||||
ENGINE_OPTION_AUDIO_DRIVER = 12 | |||||
ENGINE_OPTION_AUDIO_DRIVER = 13 | |||||
# Audio device (within a driver). | # Audio device (within a driver). | ||||
# Default unset. | # Default unset. | ||||
ENGINE_OPTION_AUDIO_DEVICE = 13 | |||||
ENGINE_OPTION_AUDIO_DEVICE = 14 | |||||
# Wherever to enable OSC support in the engine. | # Wherever to enable OSC support in the engine. | ||||
ENGINE_OPTION_OSC_ENABLED = 14 | |||||
ENGINE_OPTION_OSC_ENABLED = 15 | |||||
# The network TCP port to use for OSC. | # The network TCP port to use for OSC. | ||||
# A value of 0 means use a random port. | # A value of 0 means use a random port. | ||||
# A value of < 0 means to not enable the TCP port for OSC. | # A value of < 0 means to not enable the TCP port for OSC. | ||||
# @note Valid ports begin at 1024 and end at 32767 (inclusive) | # @note Valid ports begin at 1024 and end at 32767 (inclusive) | ||||
ENGINE_OPTION_OSC_PORT_TCP = 15 | |||||
ENGINE_OPTION_OSC_PORT_TCP = 16 | |||||
# The network UDP port to use for OSC. | # The network UDP port to use for OSC. | ||||
# A value of 0 means use a random port. | # A value of 0 means use a random port. | ||||
# A value of < 0 means to not enable the UDP port for OSC. | # A value of < 0 means to not enable the UDP port for OSC. | ||||
# @note Disabling this option prevents DSSI UIs from working! | # @note Disabling this option prevents DSSI UIs from working! | ||||
# @note Valid ports begin at 1024 and end at 32767 (inclusive) | # @note Valid ports begin at 1024 and end at 32767 (inclusive) | ||||
ENGINE_OPTION_OSC_PORT_UDP = 16 | |||||
ENGINE_OPTION_OSC_PORT_UDP = 17 | |||||
# Set path used for a specific file type. | # Set path used for a specific file type. | ||||
# Uses value as the file format, valueStr as actual path. | # Uses value as the file format, valueStr as actual path. | ||||
ENGINE_OPTION_FILE_PATH = 17 | |||||
ENGINE_OPTION_FILE_PATH = 18 | |||||
# Set path used for a specific plugin type. | # Set path used for a specific plugin type. | ||||
# Uses value as the plugin format, valueStr as actual path. | # Uses value as the plugin format, valueStr as actual path. | ||||
# @see PluginType | # @see PluginType | ||||
ENGINE_OPTION_PLUGIN_PATH = 18 | |||||
ENGINE_OPTION_PLUGIN_PATH = 19 | |||||
# Set path to the binary files. | # Set path to the binary files. | ||||
# Default unset. | # Default unset. | ||||
# @note Must be set for plugin and UI bridges to work | # @note Must be set for plugin and UI bridges to work | ||||
ENGINE_OPTION_PATH_BINARIES = 19 | |||||
ENGINE_OPTION_PATH_BINARIES = 20 | |||||
# Set path to the resource files. | # Set path to the resource files. | ||||
# Default unset. | # Default unset. | ||||
# @note Must be set for some internal plugins to work | # @note Must be set for some internal plugins to work | ||||
ENGINE_OPTION_PATH_RESOURCES = 20 | |||||
ENGINE_OPTION_PATH_RESOURCES = 21 | |||||
# Prevent bad plugin and UI behaviour. | # Prevent bad plugin and UI behaviour. | ||||
# @note: Linux only | # @note: Linux only | ||||
ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR = 21 | |||||
ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR = 22 | |||||
# Set UI scaling used in frontend, so backend can do the same for plugin UIs. | # Set UI scaling used in frontend, so backend can do the same for plugin UIs. | ||||
ENGINE_OPTION_FRONTEND_UI_SCALE = 22 | |||||
ENGINE_OPTION_FRONTEND_UI_SCALE = 23 | |||||
# Set frontend winId, used to define as parent window for plugin UIs. | # Set frontend winId, used to define as parent window for plugin UIs. | ||||
ENGINE_OPTION_FRONTEND_WIN_ID = 23 | |||||
ENGINE_OPTION_FRONTEND_WIN_ID = 24 | |||||
# Set path to wine executable. | # Set path to wine executable. | ||||
ENGINE_OPTION_WINE_EXECUTABLE = 24 | |||||
ENGINE_OPTION_WINE_EXECUTABLE = 25 | |||||
# Enable automatic wineprefix detection. | # Enable automatic wineprefix detection. | ||||
ENGINE_OPTION_WINE_AUTO_PREFIX = 25 | |||||
ENGINE_OPTION_WINE_AUTO_PREFIX = 26 | |||||
# Fallback wineprefix to use if automatic detection fails or is disabled, and WINEPREFIX is not set. | # Fallback wineprefix to use if automatic detection fails or is disabled, and WINEPREFIX is not set. | ||||
ENGINE_OPTION_WINE_FALLBACK_PREFIX = 26 | |||||
ENGINE_OPTION_WINE_FALLBACK_PREFIX = 27 | |||||
# Enable realtime priority for Wine application and server threads. | # Enable realtime priority for Wine application and server threads. | ||||
ENGINE_OPTION_WINE_RT_PRIO_ENABLED = 27 | |||||
ENGINE_OPTION_WINE_RT_PRIO_ENABLED = 28 | |||||
# Base realtime priority for Wine threads. | # Base realtime priority for Wine threads. | ||||
ENGINE_OPTION_WINE_BASE_RT_PRIO = 28 | |||||
ENGINE_OPTION_WINE_BASE_RT_PRIO = 29 | |||||
# Wine server realtime priority. | # Wine server realtime priority. | ||||
ENGINE_OPTION_WINE_SERVER_RT_PRIO = 29 | |||||
ENGINE_OPTION_WINE_SERVER_RT_PRIO = 30 | |||||
# Capture console output into debug callbacks | # Capture console output into debug callbacks | ||||
ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT = 30 | |||||
ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT = 31 | |||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# Engine Process Mode | # Engine Process Mode | ||||
@@ -1498,6 +1501,7 @@ class CarlaHostMeta(object): | |||||
self.forceStereo = False | self.forceStereo = False | ||||
self.manageUIs = False | self.manageUIs = False | ||||
self.maxParameters = 0 | self.maxParameters = 0 | ||||
self.resetXruns = False | |||||
self.preferPluginBridges = False | self.preferPluginBridges = False | ||||
self.preferUIBridges = False | self.preferUIBridges = False | ||||
self.preventBadBehaviour = False | self.preventBadBehaviour = False | ||||
@@ -99,7 +99,8 @@ CarlaHost::CarlaHost() | |||||
exportLV2(false), | exportLV2(false), | ||||
forceStereo(false), | forceStereo(false), | ||||
manageUIs(false), | manageUIs(false), | ||||
maxParameters(false), | |||||
maxParameters(0), | |||||
resetXruns(false), | |||||
preferPluginBridges(false), | preferPluginBridges(false), | ||||
preferUIBridges(false), | preferUIBridges(false), | ||||
preventBadBehaviour(false), | preventBadBehaviour(false), | ||||
@@ -2549,6 +2550,7 @@ void loadHostSettings(CarlaHost& host) | |||||
host.exportLV2 = settings.valueBool(CARLA_KEY_EXPERIMENTAL_EXPORT_LV2, CARLA_DEFAULT_EXPERIMENTAL_LV2_EXPORT); | host.exportLV2 = settings.valueBool(CARLA_KEY_EXPERIMENTAL_EXPORT_LV2, CARLA_DEFAULT_EXPERIMENTAL_LV2_EXPORT); | ||||
host.manageUIs = settings.valueBool(CARLA_KEY_ENGINE_MANAGE_UIS, CARLA_DEFAULT_MANAGE_UIS); | host.manageUIs = settings.valueBool(CARLA_KEY_ENGINE_MANAGE_UIS, CARLA_DEFAULT_MANAGE_UIS); | ||||
host.maxParameters = settings.valueUInt(CARLA_KEY_ENGINE_MAX_PARAMETERS, CARLA_DEFAULT_MAX_PARAMETERS); | host.maxParameters = settings.valueUInt(CARLA_KEY_ENGINE_MAX_PARAMETERS, CARLA_DEFAULT_MAX_PARAMETERS); | ||||
host.resetXruns = settings.valueBool(CARLA_KEY_ENGINE_RESET_XRUNS, CARLA_DEFAULT_RESET_XRUNS); | |||||
host.forceStereo = settings.valueBool(CARLA_KEY_ENGINE_FORCE_STEREO, CARLA_DEFAULT_FORCE_STEREO); | host.forceStereo = settings.valueBool(CARLA_KEY_ENGINE_FORCE_STEREO, CARLA_DEFAULT_FORCE_STEREO); | ||||
host.preferPluginBridges = settings.valueBool(CARLA_KEY_ENGINE_PREFER_PLUGIN_BRIDGES, CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES); | host.preferPluginBridges = settings.valueBool(CARLA_KEY_ENGINE_PREFER_PLUGIN_BRIDGES, CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES); | ||||
host.preferUIBridges = settings.valueBool(CARLA_KEY_ENGINE_PREFER_UI_BRIDGES, CARLA_DEFAULT_PREFER_UI_BRIDGES); | host.preferUIBridges = settings.valueBool(CARLA_KEY_ENGINE_PREFER_UI_BRIDGES, CARLA_DEFAULT_PREFER_UI_BRIDGES); | ||||
@@ -72,6 +72,7 @@ public: | |||||
bool forceStereo; | bool forceStereo; | ||||
bool manageUIs; | bool manageUIs; | ||||
uint maxParameters; | uint maxParameters; | ||||
bool resetXruns; | |||||
bool preferPluginBridges; | bool preferPluginBridges; | ||||
bool preferUIBridges; | bool preferUIBridges; | ||||
bool preventBadBehaviour; | bool preventBadBehaviour; | ||||
@@ -2955,6 +2955,7 @@ def loadHostSettings(host): | |||||
host.exportLV2 = settings.value(CARLA_KEY_EXPERIMENTAL_EXPORT_LV2, CARLA_DEFAULT_EXPERIMENTAL_LV2_EXPORT, bool) | host.exportLV2 = settings.value(CARLA_KEY_EXPERIMENTAL_EXPORT_LV2, CARLA_DEFAULT_EXPERIMENTAL_LV2_EXPORT, bool) | ||||
host.manageUIs = settings.value(CARLA_KEY_ENGINE_MANAGE_UIS, CARLA_DEFAULT_MANAGE_UIS, bool) | host.manageUIs = settings.value(CARLA_KEY_ENGINE_MANAGE_UIS, CARLA_DEFAULT_MANAGE_UIS, bool) | ||||
host.maxParameters = settings.value(CARLA_KEY_ENGINE_MAX_PARAMETERS, CARLA_DEFAULT_MAX_PARAMETERS, int) | host.maxParameters = settings.value(CARLA_KEY_ENGINE_MAX_PARAMETERS, CARLA_DEFAULT_MAX_PARAMETERS, int) | ||||
host.resetXruns = settings.value(CARLA_KEY_ENGINE_RESET_XRUNS, CARLA_DEFAULT_RESET_XRUNS, bool) | |||||
host.forceStereo = settings.value(CARLA_KEY_ENGINE_FORCE_STEREO, CARLA_DEFAULT_FORCE_STEREO, bool) | host.forceStereo = settings.value(CARLA_KEY_ENGINE_FORCE_STEREO, CARLA_DEFAULT_FORCE_STEREO, bool) | ||||
host.preferPluginBridges = settings.value(CARLA_KEY_ENGINE_PREFER_PLUGIN_BRIDGES, CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES, bool) | host.preferPluginBridges = settings.value(CARLA_KEY_ENGINE_PREFER_PLUGIN_BRIDGES, CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES, bool) | ||||
host.preferUIBridges = settings.value(CARLA_KEY_ENGINE_PREFER_UI_BRIDGES, CARLA_DEFAULT_PREFER_UI_BRIDGES, bool) | host.preferUIBridges = settings.value(CARLA_KEY_ENGINE_PREFER_UI_BRIDGES, CARLA_DEFAULT_PREFER_UI_BRIDGES, bool) | ||||
@@ -3008,6 +3009,7 @@ def setHostSettings(host): | |||||
host.set_engine_option(ENGINE_OPTION_FORCE_STEREO, host.forceStereo, "") | host.set_engine_option(ENGINE_OPTION_FORCE_STEREO, host.forceStereo, "") | ||||
host.set_engine_option(ENGINE_OPTION_MAX_PARAMETERS, host.maxParameters, "") | host.set_engine_option(ENGINE_OPTION_MAX_PARAMETERS, host.maxParameters, "") | ||||
host.set_engine_option(ENGINE_OPTION_RESET_XRUNS, host.resetXruns, "") | |||||
host.set_engine_option(ENGINE_OPTION_PREFER_PLUGIN_BRIDGES, host.preferPluginBridges, "") | host.set_engine_option(ENGINE_OPTION_PREFER_PLUGIN_BRIDGES, host.preferPluginBridges, "") | ||||
host.set_engine_option(ENGINE_OPTION_PREFER_UI_BRIDGES, host.preferUIBridges, "") | host.set_engine_option(ENGINE_OPTION_PREFER_UI_BRIDGES, host.preferUIBridges, "") | ||||
host.set_engine_option(ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR, host.preventBadBehaviour, "") | host.set_engine_option(ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR, host.preventBadBehaviour, "") | ||||
@@ -435,9 +435,9 @@ enum PluginPathIndexes { | |||||
struct CarlaSettingsW::PrivateData { | struct CarlaSettingsW::PrivateData { | ||||
Ui::CarlaSettingsW ui; | Ui::CarlaSettingsW ui; | ||||
const CarlaHost& host; | |||||
CarlaHost& host; | |||||
PrivateData(CarlaSettingsW* const self, const CarlaHost& h) | |||||
PrivateData(CarlaSettingsW* const self, CarlaHost& h) | |||||
: ui(), | : ui(), | ||||
host(h) | host(h) | ||||
{ | { | ||||
@@ -578,6 +578,7 @@ struct CarlaSettingsW::PrivateData { | |||||
ui.cb_engine_process_mode_other->setCurrentIndex(0); | ui.cb_engine_process_mode_other->setCurrentIndex(0); | ||||
ui.sb_engine_max_params->setValue(static_cast<int>(host.maxParameters)); | ui.sb_engine_max_params->setValue(static_cast<int>(host.maxParameters)); | ||||
ui.cb_engine_reset_xruns->setChecked(host.resetXruns); | |||||
ui.ch_engine_manage_uis->setChecked(host.manageUIs); | ui.ch_engine_manage_uis->setChecked(host.manageUIs); | ||||
ui.ch_engine_prefer_ui_bridges->setChecked(host.preferUIBridges); | ui.ch_engine_prefer_ui_bridges->setChecked(host.preferUIBridges); | ||||
ui.sb_engine_ui_bridges_timeout->setValue(host.uiBridgesTimeout); | ui.sb_engine_ui_bridges_timeout->setValue(host.uiBridgesTimeout); | ||||
@@ -746,6 +747,429 @@ struct CarlaSettingsW::PrivateData { | |||||
CARLA_DEFAULT_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR)); | CARLA_DEFAULT_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR)); | ||||
} | } | ||||
void saveSettings() | |||||
{ | |||||
{ | |||||
QSafeSettings settings; | |||||
host.experimental = ui.ch_main_experimental->isChecked(); | |||||
if (! host.experimental) | |||||
resetExperimentalSettings(); | |||||
// -------------------------------------------------------------------------------------------------------- | |||||
// Main | |||||
settings.setValue(CARLA_KEY_MAIN_PROJECT_FOLDER, ui.le_main_proj_folder->text()); | |||||
settings.setValue(CARLA_KEY_MAIN_CONFIRM_EXIT, ui.ch_main_confirm_exit->isChecked()); | |||||
settings.setValue(CARLA_KEY_MAIN_USE_PRO_THEME, ui.ch_main_theme_pro->isChecked()); | |||||
settings.setValue(CARLA_KEY_MAIN_PRO_THEME_COLOR, ui.cb_main_theme_color->currentText()); | |||||
settings.setValue(CARLA_KEY_MAIN_REFRESH_INTERVAL, ui.sb_main_refresh_interval->value()); | |||||
// -------------------------------------------------------------------------------------------------------- | |||||
// Canvas | |||||
settings.setValue(CARLA_KEY_CANVAS_THEME, ui.cb_canvas_theme->currentText()); | |||||
settings.setValue(CARLA_KEY_CANVAS_SIZE, ui.cb_canvas_size->currentText()); | |||||
settings.setValue(CARLA_KEY_CANVAS_USE_BEZIER_LINES, ui.cb_canvas_bezier_lines->isChecked()); | |||||
settings.setValue(CARLA_KEY_CANVAS_AUTO_HIDE_GROUPS, ui.cb_canvas_hide_groups->isChecked()); | |||||
settings.setValue(CARLA_KEY_CANVAS_AUTO_SELECT_ITEMS, ui.cb_canvas_auto_select->isChecked()); | |||||
settings.setValue(CARLA_KEY_CANVAS_EYE_CANDY, ui.cb_canvas_eyecandy->isChecked()); | |||||
settings.setValue(CARLA_KEY_CANVAS_FANCY_EYE_CANDY, ui.cb_canvas_fancy_eyecandy->isChecked()); | |||||
settings.setValue(CARLA_KEY_CANVAS_USE_OPENGL, ui.cb_canvas_use_opengl->isChecked()); | |||||
settings.setValue(CARLA_KEY_CANVAS_HQ_ANTIALIASING, ui.cb_canvas_render_hq_aa->isChecked()); | |||||
settings.setValue(CARLA_KEY_CANVAS_ANTIALIASING, ui.cb_canvas_render_aa->checkState()); // 0, 1, 2 match their enum variants | |||||
settings.setValue(CARLA_KEY_CANVAS_FULL_REPAINTS, ui.cb_canvas_full_repaints->isChecked()); | |||||
settings.setValue(CARLA_KEY_CANVAS_INLINE_DISPLAYS, ui.cb_canvas_inline_displays->isChecked()); | |||||
} | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
QSafeSettings settings("falkTX", "Carla2"); | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// Main | |||||
settings.setValue(CARLA_KEY_MAIN_EXPERIMENTAL, host.experimental); | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// Engine | |||||
const QCarlaString audioDriver = ui.cb_engine_audio_driver->currentText(); | |||||
if (audioDriver.isNotEmpty() && host.audioDriverForced.isEmpty() && ! host.isPlugin) | |||||
settings.setValue(CARLA_KEY_ENGINE_AUDIO_DRIVER, audioDriver); | |||||
if (! host.processModeForced) | |||||
{ | |||||
// engine sends callback if processMode really changes | |||||
if (audioDriver == "JACK") | |||||
host.nextProcessMode = static_cast<EngineProcessMode>(ui.cb_engine_process_mode_jack->currentIndex()); | |||||
else | |||||
host.nextProcessMode = static_cast<EngineProcessMode>(ui.cb_engine_process_mode_other->currentIndex() + PROCESS_MODE_NON_JACK_PADDING); | |||||
settings.setValue(CARLA_KEY_ENGINE_PROCESS_MODE, host.nextProcessMode); | |||||
} | |||||
host.exportLV2 = ui.ch_exp_export_lv2->isChecked(); | |||||
host.forceStereo = ui.ch_engine_force_stereo->isChecked(); | |||||
host.resetXruns = ui.cb_engine_reset_xruns->isChecked(); | |||||
host.maxParameters = static_cast<uint>(std::max(0, ui.sb_engine_max_params->value())); | |||||
host.manageUIs = ui.ch_engine_manage_uis->isChecked(); | |||||
host.preferPluginBridges = ui.ch_engine_prefer_plugin_bridges->isChecked(); | |||||
host.preferUIBridges = ui.ch_engine_prefer_ui_bridges->isChecked(); | |||||
host.showLogs = ui.ch_main_show_logs->isChecked(); | |||||
host.showPluginBridges = ui.cb_exp_plugin_bridges->isChecked(); | |||||
host.showWineBridges = ui.ch_exp_wine_bridges->isChecked(); | |||||
host.uiBridgesTimeout = ui.sb_engine_ui_bridges_timeout->value(); | |||||
host.uisAlwaysOnTop = ui.ch_engine_uis_always_on_top->isChecked(); | |||||
if (ui.ch_engine_force_stereo->isEnabled()) | |||||
settings.setValue(CARLA_KEY_ENGINE_FORCE_STEREO, host.forceStereo); | |||||
settings.setValue(CARLA_KEY_MAIN_SHOW_LOGS, host.showLogs); | |||||
settings.setValue(CARLA_KEY_ENGINE_MAX_PARAMETERS, host.maxParameters); | |||||
settings.setValue(CARLA_KEY_ENGINE_RESET_XRUNS, host.resetXruns); | |||||
settings.setValue(CARLA_KEY_ENGINE_MANAGE_UIS, host.manageUIs); | |||||
settings.setValue(CARLA_KEY_ENGINE_PREFER_PLUGIN_BRIDGES, host.preferPluginBridges); | |||||
settings.setValue(CARLA_KEY_ENGINE_PREFER_UI_BRIDGES, host.preferUIBridges); | |||||
settings.setValue(CARLA_KEY_ENGINE_UI_BRIDGES_TIMEOUT, host.uiBridgesTimeout); | |||||
settings.setValue(CARLA_KEY_ENGINE_UIS_ALWAYS_ON_TOP, host.uisAlwaysOnTop); | |||||
settings.setValue(CARLA_KEY_EXPERIMENTAL_EXPORT_LV2, host.exportLV2); | |||||
settings.setValue(CARLA_KEY_EXPERIMENTAL_PLUGIN_BRIDGES, host.showPluginBridges); | |||||
settings.setValue(CARLA_KEY_EXPERIMENTAL_WINE_BRIDGES, host.showWineBridges); | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// OSC | |||||
settings.setValue(CARLA_KEY_OSC_ENABLED, ui.ch_osc_enable->isChecked()); | |||||
settings.setValue(CARLA_KEY_OSC_TCP_PORT_ENABLED, ui.group_osc_tcp_port->isChecked()); | |||||
settings.setValue(CARLA_KEY_OSC_UDP_PORT_ENABLED, ui.group_osc_udp_port->isChecked()); | |||||
settings.setValue(CARLA_KEY_OSC_TCP_PORT_RANDOM, ui.rb_osc_tcp_port_random->isChecked()); | |||||
settings.setValue(CARLA_KEY_OSC_UDP_PORT_RANDOM, ui.rb_osc_udp_port_random->isChecked()); | |||||
settings.setValue(CARLA_KEY_OSC_TCP_PORT_NUMBER, ui.sb_osc_tcp_port_number->value()); | |||||
settings.setValue(CARLA_KEY_OSC_UDP_PORT_NUMBER, ui.sb_osc_udp_port_number->value()); | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// File Paths | |||||
QStringList audioPaths; | |||||
QStringList midiPaths; | |||||
for (int i=0; i < ui.lw_files_audio->count(); ++i) | |||||
audioPaths.append(ui.lw_files_audio->item(i)->text()); | |||||
for (int i=0; i < ui.lw_files_midi->count(); ++i) | |||||
midiPaths.append(ui.lw_files_midi->item(i)->text()); | |||||
/* TODO | |||||
host.set_engine_option(ENGINE_OPTION_FILE_PATH, FILE_AUDIO, splitter.join(audioPaths)); | |||||
host.set_engine_option(ENGINE_OPTION_FILE_PATH, FILE_MIDI, splitter.join(midiPaths)); | |||||
*/ | |||||
settings.setValue(CARLA_KEY_PATHS_AUDIO, audioPaths); | |||||
settings.setValue(CARLA_KEY_PATHS_MIDI, midiPaths); | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// Plugin Paths | |||||
QStringList ladspas; | |||||
QStringList dssis; | |||||
QStringList lv2s; | |||||
QStringList vst2s; | |||||
QStringList vst3s; | |||||
QStringList sf2s; | |||||
QStringList sfzs; | |||||
for (int i=0; i < ui.lw_ladspa->count(); ++i) | |||||
ladspas.append(ui.lw_ladspa->item(i)->text()); | |||||
for (int i=0; i < ui.lw_dssi->count(); ++i) | |||||
dssis.append(ui.lw_dssi->item(i)->text()); | |||||
for (int i=0; i < ui.lw_lv2->count(); ++i) | |||||
lv2s.append(ui.lw_lv2->item(i)->text()); | |||||
for (int i=0; i < ui.lw_vst->count(); ++i) | |||||
vst2s.append(ui.lw_vst->item(i)->text()); | |||||
for (int i=0; i < ui.lw_vst3->count(); ++i) | |||||
vst3s.append(ui.lw_vst3->item(i)->text()); | |||||
for (int i=0; i < ui.lw_sf2->count(); ++i) | |||||
sf2s.append(ui.lw_sf2->item(i)->text()); | |||||
for (int i=0; i < ui.lw_sfz->count(); ++i) | |||||
sfzs.append(ui.lw_sfz->item(i)->text()); | |||||
/* TODO | |||||
host.set_engine_option(ENGINE_OPTION_PLUGIN_PATH, PLUGIN_LADSPA, splitter.join(ladspas)); | |||||
host.set_engine_option(ENGINE_OPTION_PLUGIN_PATH, PLUGIN_DSSI, splitter.join(dssis)); | |||||
host.set_engine_option(ENGINE_OPTION_PLUGIN_PATH, PLUGIN_LV2, splitter.join(lv2s)); | |||||
host.set_engine_option(ENGINE_OPTION_PLUGIN_PATH, PLUGIN_VST2, splitter.join(vst2s)); | |||||
host.set_engine_option(ENGINE_OPTION_PLUGIN_PATH, PLUGIN_VST3, splitter.join(vst3s)); | |||||
host.set_engine_option(ENGINE_OPTION_PLUGIN_PATH, PLUGIN_SF2, splitter.join(sf2s)); | |||||
host.set_engine_option(ENGINE_OPTION_PLUGIN_PATH, PLUGIN_SFZ, splitter.join(sfzs)); | |||||
*/ | |||||
settings.setValue(CARLA_KEY_PATHS_LADSPA, ladspas); | |||||
settings.setValue(CARLA_KEY_PATHS_DSSI, dssis); | |||||
settings.setValue(CARLA_KEY_PATHS_LV2, lv2s); | |||||
settings.setValue(CARLA_KEY_PATHS_VST2, vst2s); | |||||
settings.setValue(CARLA_KEY_PATHS_VST3, vst3s); | |||||
settings.setValue(CARLA_KEY_PATHS_SF2, sf2s); | |||||
settings.setValue(CARLA_KEY_PATHS_SFZ, sfzs); | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// Wine | |||||
settings.setValue(CARLA_KEY_WINE_EXECUTABLE, ui.le_wine_exec->text()); | |||||
settings.setValue(CARLA_KEY_WINE_AUTO_PREFIX, ui.cb_wine_prefix_detect->isChecked()); | |||||
settings.setValue(CARLA_KEY_WINE_FALLBACK_PREFIX, ui.le_wine_prefix_fallback->text()); | |||||
settings.setValue(CARLA_KEY_WINE_RT_PRIO_ENABLED, ui.group_wine_realtime->isChecked()); | |||||
settings.setValue(CARLA_KEY_WINE_BASE_RT_PRIO, ui.sb_wine_base_prio->value()); | |||||
settings.setValue(CARLA_KEY_WINE_SERVER_RT_PRIO, ui.sb_wine_server_prio->value()); | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// Experimental | |||||
settings.setValue(CARLA_KEY_EXPERIMENTAL_JACK_APPS, ui.ch_exp_jack_apps->isChecked()); | |||||
settings.setValue(CARLA_KEY_EXPERIMENTAL_LOAD_LIB_GLOBAL, ui.ch_exp_load_lib_global->isChecked()); | |||||
settings.setValue(CARLA_KEY_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR, ui.ch_exp_prevent_bad_behaviour->isChecked()); | |||||
} | |||||
void resetSettings() | |||||
{ | |||||
switch (ui.lw_page->currentRow()) | |||||
{ | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// Main | |||||
case TAB_INDEX_MAIN: | |||||
ui.le_main_proj_folder->setText(CARLA_DEFAULT_MAIN_PROJECT_FOLDER); | |||||
ui.ch_main_theme_pro->setChecked(CARLA_DEFAULT_MAIN_USE_PRO_THEME && ui.group_main_theme->isEnabled()); | |||||
ui.cb_main_theme_color->setCurrentIndex(ui.cb_main_theme_color->findText(CARLA_DEFAULT_MAIN_PRO_THEME_COLOR)); | |||||
ui.sb_main_refresh_interval->setValue(CARLA_DEFAULT_MAIN_REFRESH_INTERVAL); | |||||
ui.ch_main_confirm_exit->setChecked(CARLA_DEFAULT_MAIN_CONFIRM_EXIT); | |||||
ui.ch_main_show_logs->setChecked(CARLA_DEFAULT_MAIN_SHOW_LOGS); | |||||
break; | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// Canvas | |||||
case TAB_INDEX_CANVAS: | |||||
ui.cb_canvas_theme->setCurrentIndex(ui.cb_canvas_theme->findText(CARLA_DEFAULT_CANVAS_THEME)); | |||||
ui.cb_canvas_size->setCurrentIndex(ui.cb_canvas_size->findText(CARLA_DEFAULT_CANVAS_SIZE)); | |||||
ui.cb_canvas_bezier_lines->setChecked(CARLA_DEFAULT_CANVAS_USE_BEZIER_LINES); | |||||
ui.cb_canvas_hide_groups->setChecked(CARLA_DEFAULT_CANVAS_AUTO_HIDE_GROUPS); | |||||
ui.cb_canvas_auto_select->setChecked(CARLA_DEFAULT_CANVAS_AUTO_SELECT_ITEMS); | |||||
ui.cb_canvas_eyecandy->setChecked(CARLA_DEFAULT_CANVAS_EYE_CANDY); | |||||
ui.cb_canvas_render_aa->setCheckState(Qt::PartiallyChecked); // CARLA_DEFAULT_CANVAS_ANTIALIASING | |||||
ui.cb_canvas_full_repaints->setChecked(CARLA_DEFAULT_CANVAS_FULL_REPAINTS); | |||||
break; | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// Engine | |||||
case TAB_INDEX_ENGINE: | |||||
if (! host.isPlugin) | |||||
ui.cb_engine_audio_driver->setCurrentIndex(0); | |||||
if (! host.processModeForced) | |||||
{ | |||||
if (ui.cb_engine_audio_driver->currentText() == "JACK") | |||||
{ | |||||
ui.cb_engine_process_mode_jack->setCurrentIndex(CARLA_DEFAULT_PROCESS_MODE); | |||||
ui.sw_engine_process_mode->setCurrentIndex(0); // show all modes | |||||
} | |||||
else | |||||
{ | |||||
ui.cb_engine_process_mode_other->setCurrentIndex(CARLA_DEFAULT_PROCESS_MODE-PROCESS_MODE_NON_JACK_PADDING); | |||||
ui.sw_engine_process_mode->setCurrentIndex(1); // hide single+multi client modes | |||||
} | |||||
} | |||||
ui.sb_engine_max_params->setValue(CARLA_DEFAULT_MAX_PARAMETERS); | |||||
ui.cb_engine_reset_xruns->setChecked(CARLA_DEFAULT_RESET_XRUNS); | |||||
ui.ch_engine_uis_always_on_top->setChecked(CARLA_DEFAULT_UIS_ALWAYS_ON_TOP); | |||||
ui.ch_engine_prefer_ui_bridges->setChecked(CARLA_DEFAULT_PREFER_UI_BRIDGES); | |||||
ui.sb_engine_ui_bridges_timeout->setValue(CARLA_DEFAULT_UI_BRIDGES_TIMEOUT); | |||||
ui.ch_engine_manage_uis->setChecked(CARLA_DEFAULT_MANAGE_UIS); | |||||
break; | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// OSC | |||||
case TAB_INDEX_OSC: | |||||
ui.ch_osc_enable->setChecked(CARLA_DEFAULT_OSC_ENABLED); | |||||
ui.group_osc_tcp_port->setChecked(CARLA_DEFAULT_OSC_TCP_PORT_ENABLED); | |||||
ui.group_osc_udp_port->setChecked(CARLA_DEFAULT_OSC_UDP_PORT_ENABLED); | |||||
ui.sb_osc_tcp_port_number->setValue(CARLA_DEFAULT_OSC_TCP_PORT_NUMBER); | |||||
ui.sb_osc_udp_port_number->setValue(CARLA_DEFAULT_OSC_UDP_PORT_NUMBER); | |||||
if (CARLA_DEFAULT_OSC_TCP_PORT_RANDOM) | |||||
{ | |||||
ui.rb_osc_tcp_port_specific->setChecked(false); | |||||
ui.rb_osc_tcp_port_random->setChecked(true); | |||||
} | |||||
else | |||||
{ | |||||
ui.rb_osc_tcp_port_random->setChecked(false); | |||||
ui.rb_osc_tcp_port_specific->setChecked(true); | |||||
} | |||||
if (CARLA_DEFAULT_OSC_UDP_PORT_RANDOM) | |||||
{ | |||||
ui.rb_osc_udp_port_specific->setChecked(false); | |||||
ui.rb_osc_udp_port_random->setChecked(true); | |||||
} | |||||
else | |||||
{ | |||||
ui.rb_osc_udp_port_random->setChecked(false); | |||||
ui.rb_osc_udp_port_specific->setChecked(true); | |||||
} | |||||
break; | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// Plugin Paths | |||||
case TAB_INDEX_FILEPATHS: | |||||
switch (ui.tw_filepaths->currentIndex()) | |||||
{ | |||||
case FILEPATH_INDEX_AUDIO: | |||||
ui.lw_files_audio->clear(); | |||||
break; | |||||
case FILEPATH_INDEX_MIDI: | |||||
ui.lw_files_midi->clear(); | |||||
break; | |||||
} | |||||
break; | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// Plugin Paths | |||||
case TAB_INDEX_PLUGINPATHS: | |||||
{ | |||||
QStringList paths; | |||||
switch (ui.tw_paths->currentIndex()) | |||||
{ | |||||
case PLUGINPATH_INDEX_LADSPA: | |||||
paths = CARLA_DEFAULT_LADSPA_PATH; | |||||
paths.sort(); | |||||
ui.lw_ladspa->clear(); | |||||
for (const auto& path : paths) | |||||
{ | |||||
if (path.isEmpty()) | |||||
continue; | |||||
ui.lw_ladspa->addItem(path); | |||||
} | |||||
break; | |||||
case PLUGINPATH_INDEX_DSSI: | |||||
paths = CARLA_DEFAULT_DSSI_PATH; | |||||
paths.sort(); | |||||
ui.lw_dssi->clear(); | |||||
for (const auto& path : paths) | |||||
{ | |||||
if (path.isEmpty()) | |||||
continue; | |||||
ui.lw_dssi->addItem(path); | |||||
} | |||||
break; | |||||
case PLUGINPATH_INDEX_LV2: | |||||
paths = CARLA_DEFAULT_LV2_PATH; | |||||
paths.sort(); | |||||
ui.lw_lv2->clear(); | |||||
for (const auto& path : paths) | |||||
{ | |||||
if (path.isEmpty()) | |||||
continue; | |||||
ui.lw_lv2->addItem(path); | |||||
} | |||||
break; | |||||
case PLUGINPATH_INDEX_VST2: | |||||
paths = CARLA_DEFAULT_VST2_PATH; | |||||
paths.sort(); | |||||
ui.lw_vst->clear(); | |||||
for (const auto& path : paths) | |||||
{ | |||||
if (path.isEmpty()) | |||||
continue; | |||||
ui.lw_vst->addItem(path); | |||||
} | |||||
break; | |||||
case PLUGINPATH_INDEX_VST3: | |||||
paths = CARLA_DEFAULT_VST3_PATH; | |||||
paths.sort(); | |||||
ui.lw_vst3->clear(); | |||||
for (const auto& path : paths) | |||||
{ | |||||
if (path.isEmpty()) | |||||
continue; | |||||
ui.lw_vst3->addItem(path); | |||||
} | |||||
break; | |||||
case PLUGINPATH_INDEX_SF2: | |||||
paths = CARLA_DEFAULT_SF2_PATH; | |||||
paths.sort(); | |||||
ui.lw_sf2->clear(); | |||||
for (const auto& path : paths) | |||||
{ | |||||
if (path.isEmpty()) | |||||
continue; | |||||
ui.lw_sf2->addItem(path); | |||||
} | |||||
break; | |||||
case PLUGINPATH_INDEX_SFZ: | |||||
paths = CARLA_DEFAULT_SFZ_PATH; | |||||
paths.sort(); | |||||
ui.lw_sfz->clear(); | |||||
for (const auto& path : paths) | |||||
{ | |||||
if (path.isEmpty()) | |||||
continue; | |||||
ui.lw_sfz->addItem(path); | |||||
} | |||||
break; | |||||
} | |||||
break; | |||||
} | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// Wine | |||||
case TAB_INDEX_WINE: | |||||
ui.le_wine_exec->setText(CARLA_DEFAULT_WINE_EXECUTABLE); | |||||
ui.cb_wine_prefix_detect->setChecked(CARLA_DEFAULT_WINE_AUTO_PREFIX); | |||||
ui.le_wine_prefix_fallback->setText(CARLA_DEFAULT_WINE_FALLBACK_PREFIX); | |||||
ui.group_wine_realtime->setChecked(CARLA_DEFAULT_WINE_RT_PRIO_ENABLED); | |||||
ui.sb_wine_base_prio->setValue(CARLA_DEFAULT_WINE_BASE_RT_PRIO); | |||||
ui.sb_wine_server_prio->setValue(CARLA_DEFAULT_WINE_SERVER_RT_PRIO); | |||||
break; | |||||
// ------------------------------------------------------------------------------------------------------------ | |||||
// Experimental | |||||
case TAB_INDEX_EXPERIMENTAL: | |||||
resetExperimentalSettings(); | |||||
break; | |||||
} | |||||
} | |||||
void resetExperimentalSettings() | void resetExperimentalSettings() | ||||
{ | { | ||||
// Forever experimental | // Forever experimental | ||||
@@ -766,7 +1190,7 @@ struct CarlaSettingsW::PrivateData { | |||||
} | } | ||||
}; | }; | ||||
CarlaSettingsW::CarlaSettingsW(QWidget* const parent, const CarlaHost& host, const bool hasCanvas, const bool hasCanvasGL) | |||||
CarlaSettingsW::CarlaSettingsW(QWidget* const parent, CarlaHost& host, const bool hasCanvas, const bool hasCanvasGL) | |||||
: QDialog(parent), | : QDialog(parent), | ||||
self(new PrivateData(this, host)) | self(new PrivateData(this, host)) | ||||
{ | { | ||||
@@ -929,12 +1353,12 @@ CarlaSettingsW::~CarlaSettingsW() | |||||
void CarlaSettingsW::slot_saveSettings() | void CarlaSettingsW::slot_saveSettings() | ||||
{ | { | ||||
// TODO | |||||
self->saveSettings(); | |||||
} | } | ||||
void CarlaSettingsW::slot_resetSettings() | void CarlaSettingsW::slot_resetSettings() | ||||
{ | { | ||||
// TODO | |||||
self->resetSettings(); | |||||
} | } | ||||
// -------------------------------------------------------------------------------------------------------------------- | // -------------------------------------------------------------------------------------------------------------------- | ||||
@@ -93,7 +93,7 @@ class CarlaSettingsW : public QDialog | |||||
Q_OBJECT | Q_OBJECT | ||||
public: | public: | ||||
CarlaSettingsW(QWidget* parent, const CarlaHost& host, bool hasCanvas, bool hasCanvasGL); | |||||
CarlaSettingsW(QWidget* parent, CarlaHost& host, bool hasCanvas, bool hasCanvasGL); | |||||
~CarlaSettingsW() override; | ~CarlaSettingsW() override; | ||||
private: | private: | ||||
@@ -574,6 +574,7 @@ class CarlaSettingsW(QDialog): | |||||
self.ui.cb_engine_process_mode_other.setCurrentIndex(0) | self.ui.cb_engine_process_mode_other.setCurrentIndex(0) | ||||
self.ui.sb_engine_max_params.setValue(self.host.maxParameters) | self.ui.sb_engine_max_params.setValue(self.host.maxParameters) | ||||
self.ui.cb_engine_reset_xruns.setChecked(self.host.resetXruns) | |||||
self.ui.ch_engine_manage_uis.setChecked(self.host.manageUIs) | self.ui.ch_engine_manage_uis.setChecked(self.host.manageUIs) | ||||
self.ui.ch_engine_prefer_ui_bridges.setChecked(self.host.preferUIBridges) | self.ui.ch_engine_prefer_ui_bridges.setChecked(self.host.preferUIBridges) | ||||
self.ui.sb_engine_ui_bridges_timeout.setValue(self.host.uiBridgesTimeout) | self.ui.sb_engine_ui_bridges_timeout.setValue(self.host.uiBridgesTimeout) | ||||
@@ -794,6 +795,7 @@ class CarlaSettingsW(QDialog): | |||||
self.host.exportLV2 = self.ui.ch_exp_export_lv2.isChecked() | self.host.exportLV2 = self.ui.ch_exp_export_lv2.isChecked() | ||||
self.host.forceStereo = self.ui.ch_engine_force_stereo.isChecked() | self.host.forceStereo = self.ui.ch_engine_force_stereo.isChecked() | ||||
self.host.resetXruns = self.ui.cb_engine_reset_xruns.isChecked() | |||||
self.host.maxParameters = self.ui.sb_engine_max_params.value() | self.host.maxParameters = self.ui.sb_engine_max_params.value() | ||||
self.host.manageUIs = self.ui.ch_engine_manage_uis.isChecked() | self.host.manageUIs = self.ui.ch_engine_manage_uis.isChecked() | ||||
self.host.preferPluginBridges = self.ui.ch_engine_prefer_plugin_bridges.isChecked() | self.host.preferPluginBridges = self.ui.ch_engine_prefer_plugin_bridges.isChecked() | ||||
@@ -809,6 +811,7 @@ class CarlaSettingsW(QDialog): | |||||
settings.setValue(CARLA_KEY_MAIN_SHOW_LOGS, self.host.showLogs) | settings.setValue(CARLA_KEY_MAIN_SHOW_LOGS, self.host.showLogs) | ||||
settings.setValue(CARLA_KEY_ENGINE_MAX_PARAMETERS, self.host.maxParameters) | settings.setValue(CARLA_KEY_ENGINE_MAX_PARAMETERS, self.host.maxParameters) | ||||
settings.setValue(CARLA_KEY_ENGINE_RESET_XRUNS, self.host.resetXruns) | |||||
settings.setValue(CARLA_KEY_ENGINE_MANAGE_UIS, self.host.manageUIs) | settings.setValue(CARLA_KEY_ENGINE_MANAGE_UIS, self.host.manageUIs) | ||||
settings.setValue(CARLA_KEY_ENGINE_PREFER_PLUGIN_BRIDGES, self.host.preferPluginBridges) | settings.setValue(CARLA_KEY_ENGINE_PREFER_PLUGIN_BRIDGES, self.host.preferPluginBridges) | ||||
settings.setValue(CARLA_KEY_ENGINE_PREFER_UI_BRIDGES, self.host.preferUIBridges) | settings.setValue(CARLA_KEY_ENGINE_PREFER_UI_BRIDGES, self.host.preferUIBridges) | ||||
@@ -958,6 +961,7 @@ class CarlaSettingsW(QDialog): | |||||
self.ui.sw_engine_process_mode.setCurrentIndex(1) # hide single+multi client modes | self.ui.sw_engine_process_mode.setCurrentIndex(1) # hide single+multi client modes | ||||
self.ui.sb_engine_max_params.setValue(CARLA_DEFAULT_MAX_PARAMETERS) | self.ui.sb_engine_max_params.setValue(CARLA_DEFAULT_MAX_PARAMETERS) | ||||
self.ui.cb_engine_reset_xruns.setChecked(CARLA_DEFAULT_RESET_XRUNS) | |||||
self.ui.ch_engine_uis_always_on_top.setChecked(CARLA_DEFAULT_UIS_ALWAYS_ON_TOP) | self.ui.ch_engine_uis_always_on_top.setChecked(CARLA_DEFAULT_UIS_ALWAYS_ON_TOP) | ||||
self.ui.ch_engine_prefer_ui_bridges.setChecked(CARLA_DEFAULT_PREFER_UI_BRIDGES) | self.ui.ch_engine_prefer_ui_bridges.setChecked(CARLA_DEFAULT_PREFER_UI_BRIDGES) | ||||
self.ui.sb_engine_ui_bridges_timeout.setValue(CARLA_DEFAULT_UI_BRIDGES_TIMEOUT) | self.ui.sb_engine_ui_bridges_timeout.setValue(CARLA_DEFAULT_UI_BRIDGES_TIMEOUT) | ||||
@@ -151,6 +151,7 @@ static const char* const* const MIDI_CC_LIST = { | |||||
#define CARLA_KEY_ENGINE_MANAGE_UIS "Engine/ManageUIs" /* bool */ | #define CARLA_KEY_ENGINE_MANAGE_UIS "Engine/ManageUIs" /* bool */ | ||||
#define CARLA_KEY_ENGINE_UIS_ALWAYS_ON_TOP "Engine/UIsAlwaysOnTop" /* bool */ | #define CARLA_KEY_ENGINE_UIS_ALWAYS_ON_TOP "Engine/UIsAlwaysOnTop" /* bool */ | ||||
#define CARLA_KEY_ENGINE_MAX_PARAMETERS "Engine/MaxParameters" /* int */ | #define CARLA_KEY_ENGINE_MAX_PARAMETERS "Engine/MaxParameters" /* int */ | ||||
#define CARLA_KEY_ENGINE_RESET_XRUNS "Engine/ResetXruns" /* bool */ | |||||
#define CARLA_KEY_ENGINE_UI_BRIDGES_TIMEOUT "Engine/UiBridgesTimeout" /* int */ | #define CARLA_KEY_ENGINE_UI_BRIDGES_TIMEOUT "Engine/UiBridgesTimeout" /* int */ | ||||
#define CARLA_KEY_OSC_ENABLED "OSC/Enabled" | #define CARLA_KEY_OSC_ENABLED "OSC/Enabled" | ||||
@@ -228,6 +229,7 @@ static const char* const* const MIDI_CC_LIST = { | |||||
#define CARLA_DEFAULT_MANAGE_UIS true | #define CARLA_DEFAULT_MANAGE_UIS true | ||||
#define CARLA_DEFAULT_UIS_ALWAYS_ON_TOP false | #define CARLA_DEFAULT_UIS_ALWAYS_ON_TOP false | ||||
#define CARLA_DEFAULT_MAX_PARAMETERS MAX_DEFAULT_PARAMETERS | #define CARLA_DEFAULT_MAX_PARAMETERS MAX_DEFAULT_PARAMETERS | ||||
#define CARLA_DEFAULT_RESET_XRUNS false | |||||
#define CARLA_DEFAULT_UI_BRIDGES_TIMEOUT 4000 | #define CARLA_DEFAULT_UI_BRIDGES_TIMEOUT 4000 | ||||
#define CARLA_DEFAULT_AUDIO_BUFFER_SIZE 512 | #define CARLA_DEFAULT_AUDIO_BUFFER_SIZE 512 | ||||
@@ -212,6 +212,7 @@ CARLA_KEY_ENGINE_PREFER_UI_BRIDGES = "Engine/PreferUiBridges" # bool | |||||
CARLA_KEY_ENGINE_MANAGE_UIS = "Engine/ManageUIs" # bool | CARLA_KEY_ENGINE_MANAGE_UIS = "Engine/ManageUIs" # bool | ||||
CARLA_KEY_ENGINE_UIS_ALWAYS_ON_TOP = "Engine/UIsAlwaysOnTop" # bool | CARLA_KEY_ENGINE_UIS_ALWAYS_ON_TOP = "Engine/UIsAlwaysOnTop" # bool | ||||
CARLA_KEY_ENGINE_MAX_PARAMETERS = "Engine/MaxParameters" # int | CARLA_KEY_ENGINE_MAX_PARAMETERS = "Engine/MaxParameters" # int | ||||
CARLA_KEY_ENGINE_RESET_XRUNS = "Engine/ResetXruns" # bool | |||||
CARLA_KEY_ENGINE_UI_BRIDGES_TIMEOUT = "Engine/UiBridgesTimeout" # int | CARLA_KEY_ENGINE_UI_BRIDGES_TIMEOUT = "Engine/UiBridgesTimeout" # int | ||||
CARLA_KEY_OSC_ENABLED = "OSC/Enabled" | CARLA_KEY_OSC_ENABLED = "OSC/Enabled" | ||||
@@ -285,6 +286,7 @@ CARLA_DEFAULT_PREFER_UI_BRIDGES = True | |||||
CARLA_DEFAULT_MANAGE_UIS = True | CARLA_DEFAULT_MANAGE_UIS = True | ||||
CARLA_DEFAULT_UIS_ALWAYS_ON_TOP = False | CARLA_DEFAULT_UIS_ALWAYS_ON_TOP = False | ||||
CARLA_DEFAULT_MAX_PARAMETERS = MAX_DEFAULT_PARAMETERS | CARLA_DEFAULT_MAX_PARAMETERS = MAX_DEFAULT_PARAMETERS | ||||
CARLA_DEFAULT_RESET_XRUNS = False | |||||
CARLA_DEFAULT_UI_BRIDGES_TIMEOUT = 4000 | CARLA_DEFAULT_UI_BRIDGES_TIMEOUT = 4000 | ||||
CARLA_DEFAULT_AUDIO_BUFFER_SIZE = 512 | CARLA_DEFAULT_AUDIO_BUFFER_SIZE = 512 | ||||
@@ -342,6 +342,8 @@ const char* EngineOption2Str(const EngineOption option) noexcept | |||||
return "ENGINE_OPTION_UIS_ALWAYS_ON_TOP"; | return "ENGINE_OPTION_UIS_ALWAYS_ON_TOP"; | ||||
case ENGINE_OPTION_MAX_PARAMETERS: | case ENGINE_OPTION_MAX_PARAMETERS: | ||||
return "ENGINE_OPTION_MAX_PARAMETERS"; | return "ENGINE_OPTION_MAX_PARAMETERS"; | ||||
case ENGINE_OPTION_RESET_XRUNS: | |||||
return "ENGINE_OPTION_RESET_XRUNS"; | |||||
case ENGINE_OPTION_UI_BRIDGES_TIMEOUT: | case ENGINE_OPTION_UI_BRIDGES_TIMEOUT: | ||||
return "ENGINE_OPTION_UI_BRIDGES_TIMEOUT"; | return "ENGINE_OPTION_UI_BRIDGES_TIMEOUT"; | ||||
case ENGINE_OPTION_AUDIO_BUFFER_SIZE: | case ENGINE_OPTION_AUDIO_BUFFER_SIZE: | ||||