| @@ -1478,6 +1478,9 @@ | |||||
| <layout class="QGridLayout" name="gridLayout_6"> | <layout class="QGridLayout" name="gridLayout_6"> | ||||
| <item row="0" column="0" colspan="2"> | <item row="0" column="0" colspan="2"> | ||||
| <widget class="QCheckBox" name="cb_wine_prefix_detect"> | <widget class="QCheckBox" name="cb_wine_prefix_detect"> | ||||
| <property name="enabled"> | |||||
| <bool>false</bool> | |||||
| </property> | |||||
| <property name="text"> | <property name="text"> | ||||
| <string>Auto-detect Wine prefix based on plugin filename</string> | <string>Auto-detect Wine prefix based on plugin filename</string> | ||||
| </property> | </property> | ||||
| @@ -1496,6 +1499,16 @@ | |||||
| <item row="1" column="1"> | <item row="1" column="1"> | ||||
| <widget class="QLineEdit" name="le_wine_prefix_fallback"/> | <widget class="QLineEdit" name="le_wine_prefix_fallback"/> | ||||
| </item> | </item> | ||||
| <item row="2" column="0" colspan="2"> | |||||
| <widget class="QLabel" name="label_30"> | |||||
| <property name="text"> | |||||
| <string>Note: WINEPREFIX env var is prefered over this fallback</string> | |||||
| </property> | |||||
| <property name="alignment"> | |||||
| <set>Qt::AlignCenter</set> | |||||
| </property> | |||||
| </widget> | |||||
| </item> | |||||
| </layout> | </layout> | ||||
| </widget> | </widget> | ||||
| </item> | </item> | ||||
| @@ -1667,7 +1680,7 @@ | |||||
| <property name="sizeHint" stdset="0"> | <property name="sizeHint" stdset="0"> | ||||
| <size> | <size> | ||||
| <width>20</width> | <width>20</width> | ||||
| <height>115</height> | |||||
| <height>96</height> | |||||
| </size> | </size> | ||||
| </property> | </property> | ||||
| </spacer> | </spacer> | ||||
| @@ -1101,12 +1101,12 @@ typedef enum { | |||||
| ENGINE_OPTION_WINE_AUTO_PREFIX = 19, | ENGINE_OPTION_WINE_AUTO_PREFIX = 19, | ||||
| /*! | /*! | ||||
| * Fallback wineprefix to use if automatic detection fails or is diabled, 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 = 20, | ENGINE_OPTION_WINE_FALLBACK_PREFIX = 20, | ||||
| /*! | /*! | ||||
| * Enable realtie priority for Wine application and server threads. | |||||
| * Enable realtime priority for Wine application and server threads. | |||||
| */ | */ | ||||
| ENGINE_OPTION_WINE_RT_PRIO_ENABLED = 21, | ENGINE_OPTION_WINE_RT_PRIO_ENABLED = 21, | ||||
| @@ -255,7 +255,7 @@ struct CARLA_API EngineOptions { | |||||
| uintptr_t frontendWinId; | uintptr_t frontendWinId; | ||||
| struct Wine { | struct Wine { | ||||
| const char* exec; | |||||
| const char* executable; | |||||
| bool autoPrefix; | bool autoPrefix; | ||||
| const char* fallbackPrefix; | const char* fallbackPrefix; | ||||
| @@ -264,13 +264,8 @@ struct CARLA_API EngineOptions { | |||||
| int baseRtPrio; | int baseRtPrio; | ||||
| int serverRtPrio; | int serverRtPrio; | ||||
| Wine() | |||||
| : exec(nullptr), | |||||
| autoPrefix(true), | |||||
| fallbackPrefix(nullptr), | |||||
| rtPrio(true), | |||||
| baseRtPrio(15), | |||||
| serverRtPrio(10) {} | |||||
| Wine() noexcept; | |||||
| ~Wine() noexcept; | |||||
| } wine; | } wine; | ||||
| #ifndef DOXYGEN | #ifndef DOXYGEN | ||||
| @@ -269,7 +269,22 @@ static void carla_engine_init_common() | |||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_FRONTEND_WIN_ID, 0, strBuf); | gStandalone.engine->setOption(CB::ENGINE_OPTION_FRONTEND_WIN_ID, 0, strBuf); | ||||
| } | } | ||||
| else | else | ||||
| { | |||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_FRONTEND_WIN_ID, 0, "0"); | gStandalone.engine->setOption(CB::ENGINE_OPTION_FRONTEND_WIN_ID, 0, "0"); | ||||
| } | |||||
| if (gStandalone.engineOptions.wine.executable != nullptr && gStandalone.engineOptions.wine.executable[0] != '\0') | |||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_WINE_EXECUTABLE, 0, gStandalone.engineOptions.wine.executable); | |||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_WINE_AUTO_PREFIX, gStandalone.engineOptions.wine.autoPrefix ? 1 : 0, nullptr); | |||||
| if (gStandalone.engineOptions.wine.fallbackPrefix != nullptr && gStandalone.engineOptions.wine.fallbackPrefix[0] != '\0') | |||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_WINE_FALLBACK_PREFIX, 0, gStandalone.engineOptions.wine.fallbackPrefix); | |||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_WINE_RT_PRIO_ENABLED, gStandalone.engineOptions.wine.rtPrio ? 1 : 0, nullptr); | |||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_WINE_BASE_RT_PRIO, gStandalone.engineOptions.wine.baseRtPrio, nullptr); | |||||
| gStandalone.engine->setOption(CB::ENGINE_OPTION_WINE_SERVER_RT_PRIO, gStandalone.engineOptions.wine.serverRtPrio, nullptr); | |||||
| #endif | #endif | ||||
| } | } | ||||
| @@ -290,13 +305,6 @@ bool carla_engine_init(const char* driverName, const char* clientName) | |||||
| carla_setenv("WINEASIO_CLIENT_NAME", clientName); | carla_setenv("WINEASIO_CLIENT_NAME", clientName); | ||||
| #endif | #endif | ||||
| // TODO: make this an option, put somewhere else | |||||
| if (std::getenv("WINE_RT") == nullptr) | |||||
| { | |||||
| carla_setenv("WINE_RT", "55"); | |||||
| carla_setenv("WINE_SVR_RT", "70"); | |||||
| } | |||||
| gStandalone.engine = CarlaEngine::newDriverByName(driverName); | gStandalone.engine = CarlaEngine::newDriverByName(driverName); | ||||
| if (gStandalone.engine == nullptr) | if (gStandalone.engine == nullptr) | ||||
| @@ -626,6 +634,44 @@ void carla_set_engine_option(EngineOption option, int value, const char* valueSt | |||||
| gStandalone.engineOptions.frontendWinId = static_cast<uintptr_t>(winId); | gStandalone.engineOptions.frontendWinId = static_cast<uintptr_t>(winId); | ||||
| } break; | } break; | ||||
| case CB::ENGINE_OPTION_WINE_EXECUTABLE: | |||||
| CARLA_SAFE_ASSERT_RETURN(valueStr != nullptr && valueStr[0] != '\0',); | |||||
| if (gStandalone.engineOptions.wine.executable != nullptr) | |||||
| delete[] gStandalone.engineOptions.wine.executable; | |||||
| gStandalone.engineOptions.wine.executable = carla_strdup_safe(valueStr); | |||||
| break; | |||||
| case CB::ENGINE_OPTION_WINE_AUTO_PREFIX: | |||||
| CARLA_SAFE_ASSERT_RETURN(value == 0 || value == 1,); | |||||
| gStandalone.engineOptions.wine.autoPrefix = (value != 0); | |||||
| break; | |||||
| case CB::ENGINE_OPTION_WINE_FALLBACK_PREFIX: | |||||
| CARLA_SAFE_ASSERT_RETURN(valueStr != nullptr && valueStr[0] != '\0',); | |||||
| if (gStandalone.engineOptions.wine.fallbackPrefix != nullptr) | |||||
| delete[] gStandalone.engineOptions.wine.fallbackPrefix; | |||||
| gStandalone.engineOptions.wine.fallbackPrefix = carla_strdup_safe(valueStr); | |||||
| break; | |||||
| case CB::ENGINE_OPTION_WINE_RT_PRIO_ENABLED: | |||||
| CARLA_SAFE_ASSERT_RETURN(value == 0 || value == 1,); | |||||
| gStandalone.engineOptions.wine.rtPrio = (value != 0); | |||||
| break; | |||||
| case CB::ENGINE_OPTION_WINE_BASE_RT_PRIO: | |||||
| CARLA_SAFE_ASSERT_RETURN(value >= 1 && value <= 89,); | |||||
| gStandalone.engineOptions.wine.baseRtPrio = value; | |||||
| break; | |||||
| case CB::ENGINE_OPTION_WINE_SERVER_RT_PRIO: | |||||
| CARLA_SAFE_ASSERT_RETURN(value >= 1 && value <= 99,); | |||||
| gStandalone.engineOptions.wine.serverRtPrio = value; | |||||
| break; | |||||
| case CB::ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT: | case CB::ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT: | ||||
| gStandalone.logThreadEnabled = (value != 0); | gStandalone.logThreadEnabled = (value != 0); | ||||
| break; | break; | ||||
| @@ -1587,9 +1587,12 @@ void CarlaEngine::setOption(const EngineOption option, const int value, const ch | |||||
| pData->options.resourceDir = carla_strdup_safe(valueStr); | pData->options.resourceDir = carla_strdup_safe(valueStr); | ||||
| break; | break; | ||||
| case ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR: | |||||
| case ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR: { | |||||
| CARLA_SAFE_ASSERT_RETURN(pData->options.binaryDir != nullptr && pData->options.binaryDir[0] != '\0',); | CARLA_SAFE_ASSERT_RETURN(pData->options.binaryDir != nullptr && pData->options.binaryDir[0] != '\0',); | ||||
| #ifdef CARLA_OS_LINUX | #ifdef CARLA_OS_LINUX | ||||
| const ScopedEngineEnvironmentLocker _seel(this); | |||||
| if (value != 0) | if (value != 0) | ||||
| { | { | ||||
| CarlaString interposerPath(CarlaString(pData->options.binaryDir) + "/libcarla_interposer-safe.so"); | CarlaString interposerPath(CarlaString(pData->options.binaryDir) + "/libcarla_interposer-safe.so"); | ||||
| @@ -1600,7 +1603,7 @@ void CarlaEngine::setOption(const EngineOption option, const int value, const ch | |||||
| ::unsetenv("LD_PRELOAD"); | ::unsetenv("LD_PRELOAD"); | ||||
| } | } | ||||
| #endif | #endif | ||||
| break; | |||||
| } break; | |||||
| case ENGINE_OPTION_FRONTEND_WIN_ID: { | case ENGINE_OPTION_FRONTEND_WIN_ID: { | ||||
| CARLA_SAFE_ASSERT_RETURN(valueStr != nullptr && valueStr[0] != '\0',); | CARLA_SAFE_ASSERT_RETURN(valueStr != nullptr && valueStr[0] != '\0',); | ||||
| @@ -1609,6 +1612,44 @@ void CarlaEngine::setOption(const EngineOption option, const int value, const ch | |||||
| pData->options.frontendWinId = static_cast<uintptr_t>(winId); | pData->options.frontendWinId = static_cast<uintptr_t>(winId); | ||||
| } break; | } break; | ||||
| case ENGINE_OPTION_WINE_EXECUTABLE: | |||||
| CARLA_SAFE_ASSERT_RETURN(valueStr != nullptr && valueStr[0] != '\0',); | |||||
| if (pData->options.wine.executable != nullptr) | |||||
| delete[] pData->options.wine.executable; | |||||
| pData->options.wine.executable = carla_strdup_safe(valueStr); | |||||
| break; | |||||
| case ENGINE_OPTION_WINE_AUTO_PREFIX: | |||||
| CARLA_SAFE_ASSERT_RETURN(value == 0 || value == 1,); | |||||
| pData->options.wine.autoPrefix = (value != 0); | |||||
| break; | |||||
| case ENGINE_OPTION_WINE_FALLBACK_PREFIX: | |||||
| CARLA_SAFE_ASSERT_RETURN(valueStr != nullptr && valueStr[0] != '\0',); | |||||
| if (pData->options.wine.fallbackPrefix != nullptr) | |||||
| delete[] pData->options.wine.fallbackPrefix; | |||||
| pData->options.wine.fallbackPrefix = carla_strdup_safe(valueStr); | |||||
| break; | |||||
| case ENGINE_OPTION_WINE_RT_PRIO_ENABLED: | |||||
| CARLA_SAFE_ASSERT_RETURN(value == 0 || value == 1,); | |||||
| pData->options.wine.rtPrio = (value != 0); | |||||
| break; | |||||
| case ENGINE_OPTION_WINE_BASE_RT_PRIO: | |||||
| CARLA_SAFE_ASSERT_RETURN(value >= 1 && value <= 89,); | |||||
| pData->options.wine.baseRtPrio = value; | |||||
| break; | |||||
| case ENGINE_OPTION_WINE_SERVER_RT_PRIO: | |||||
| CARLA_SAFE_ASSERT_RETURN(value >= 1 && value <= 99,); | |||||
| pData->options.wine.serverRtPrio = value; | |||||
| break; | |||||
| case ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT: | case ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT: | ||||
| break; | break; | ||||
| } | } | ||||
| @@ -287,6 +287,29 @@ EngineOptions::~EngineOptions() noexcept | |||||
| } | } | ||||
| } | } | ||||
| EngineOptions::Wine::Wine() noexcept | |||||
| : executable(nullptr), | |||||
| autoPrefix(true), | |||||
| fallbackPrefix(nullptr), | |||||
| rtPrio(true), | |||||
| baseRtPrio(15), | |||||
| serverRtPrio(10) {} | |||||
| EngineOptions::Wine::~Wine() noexcept | |||||
| { | |||||
| if (executable != nullptr) | |||||
| { | |||||
| delete[] executable; | |||||
| executable = nullptr; | |||||
| } | |||||
| if (fallbackPrefix != nullptr) | |||||
| { | |||||
| delete[] fallbackPrefix; | |||||
| fallbackPrefix = nullptr; | |||||
| } | |||||
| } | |||||
| // ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
| // EngineTimeInfoBBT | // EngineTimeInfoBBT | ||||
| @@ -111,6 +111,11 @@ protected: | |||||
| carla_stderr("CarlaPluginBridgeThread::run() - already running"); | carla_stderr("CarlaPluginBridgeThread::run() - already running"); | ||||
| } | } | ||||
| char strBuf[STR_MAX+1]; | |||||
| strBuf[STR_MAX] = '\0'; | |||||
| const EngineOptions& options(kEngine->getOptions()); | |||||
| String name(kPlugin->getName()); | String name(kPlugin->getName()); | ||||
| String filename(kPlugin->getFilename()); | String filename(kPlugin->getFilename()); | ||||
| @@ -125,7 +130,47 @@ protected: | |||||
| #ifndef CARLA_OS_WIN | #ifndef CARLA_OS_WIN | ||||
| // start with "wine" if needed | // start with "wine" if needed | ||||
| if (fBinary.endsWithIgnoreCase(".exe")) | if (fBinary.endsWithIgnoreCase(".exe")) | ||||
| arguments.add("wine"); | |||||
| { | |||||
| if (options.wine.executable != nullptr && options.wine.executable[0] != '\0') | |||||
| arguments.add(options.wine.executable); | |||||
| else | |||||
| arguments.add("wine"); | |||||
| #if 0 | |||||
| if (options.wine.autoPrefix) | |||||
| { | |||||
| // TODO | |||||
| } | |||||
| else | |||||
| #endif | |||||
| if (std::getenv("WINEPREFIX") == nullptr && | |||||
| options.wine.fallbackPrefix != nullptr && | |||||
| options.wine.fallbackPrefix[0] != '\0') | |||||
| { | |||||
| carla_setenv("WINEPREFIX", options.wine.fallbackPrefix); | |||||
| } | |||||
| if (options.wine.rtPrio) | |||||
| { | |||||
| carla_setenv("STAGING_SHARED_MEMORY", "1"); | |||||
| std::snprintf(strBuf, STR_MAX, "%i", options.wine.baseRtPrio); | |||||
| carla_setenv("STAGING_RT_PRIORITY_BASE", strBuf); | |||||
| carla_setenv("WINE_RT", strBuf); | |||||
| std::snprintf(strBuf, STR_MAX, "%i", options.wine.serverRtPrio); | |||||
| carla_setenv("STAGING_RT_PRIORITY_SERVER", strBuf); | |||||
| carla_setenv("WINE_SVR_RT", strBuf); | |||||
| } | |||||
| else | |||||
| { | |||||
| carla_unsetenv("STAGING_SHARED_MEMORY"); | |||||
| carla_unsetenv("STAGING_RT_PRIORITY_BASE"); | |||||
| carla_unsetenv("STAGING_RT_PRIORITY_SERVER"); | |||||
| carla_unsetenv("WINE_RT"); | |||||
| carla_unsetenv("WINE_SVR_RT"); | |||||
| } | |||||
| } | |||||
| #endif | #endif | ||||
| // binary | // binary | ||||
| @@ -146,10 +191,6 @@ protected: | |||||
| bool started; | bool started; | ||||
| { | { | ||||
| char strBuf[STR_MAX+1]; | |||||
| strBuf[STR_MAX] = '\0'; | |||||
| const EngineOptions& options(kEngine->getOptions()); | |||||
| const ScopedEngineEnvironmentLocker _seel(kEngine); | const ScopedEngineEnvironmentLocker _seel(kEngine); | ||||
| #ifdef CARLA_OS_LINUX | #ifdef CARLA_OS_LINUX | ||||
| @@ -790,8 +790,26 @@ ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR = 16 | |||||
| # 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 = 17 | ENGINE_OPTION_FRONTEND_WIN_ID = 17 | ||||
| # Set path to wine executable. | |||||
| ENGINE_OPTION_WINE_EXECUTABLE = 18 | |||||
| # Enable automatic wineprefix detection. | |||||
| ENGINE_OPTION_WINE_AUTO_PREFIX = 19 | |||||
| # Fallback wineprefix to use if automatic detection fails or is disabled, and WINEPREFIX is not set. | |||||
| ENGINE_OPTION_WINE_FALLBACK_PREFIX = 20 | |||||
| # Enable realtime priority for Wine application and server threads. | |||||
| ENGINE_OPTION_WINE_RT_PRIO_ENABLED = 21 | |||||
| # Base realtime priority for Wine threads. | |||||
| ENGINE_OPTION_WINE_BASE_RT_PRIO = 22 | |||||
| # Wine server realtime priority. | |||||
| ENGINE_OPTION_WINE_SERVER_RT_PRIO = 23 | |||||
| # Capture console output into debug callbacks | # Capture console output into debug callbacks | ||||
| ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT = 18 | |||||
| ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT = 24 | |||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| # Engine Process Mode | # Engine Process Mode | ||||
| @@ -2459,8 +2459,6 @@ def initHost(initName, libPrefix, isControl, isPlugin, failError, HostClass = No | |||||
| # -------------------------------------------------------------------------------------------------------- | # -------------------------------------------------------------------------------------------------------- | ||||
| # Init host | # Init host | ||||
| if failError: | if failError: | ||||
| # no try | # no try | ||||
| host = HostClass() if HostClass is not None else CarlaHostQtDLL(libname, loadGlobal) | host = HostClass() if HostClass is not None else CarlaHostQtDLL(libname, loadGlobal) | ||||
| @@ -2726,6 +2724,23 @@ def setEngineSettings(host): | |||||
| host.transportMode = ENGINE_TRANSPORT_MODE_INTERNAL | host.transportMode = ENGINE_TRANSPORT_MODE_INTERNAL | ||||
| host.set_engine_option(ENGINE_OPTION_TRANSPORT_MODE, ENGINE_TRANSPORT_MODE_INTERNAL, "") | host.set_engine_option(ENGINE_OPTION_TRANSPORT_MODE, ENGINE_TRANSPORT_MODE_INTERNAL, "") | ||||
| # -------------------------------------------------------------------------------------------------------- | |||||
| # wine settings | |||||
| optWineExecutable = settings.value(CARLA_KEY_WINE_EXECUTABLE, CARLA_DEFAULT_WINE_EXECUTABLE, type=str) | |||||
| optWineAutoPrefix = settings.value(CARLA_KEY_WINE_AUTO_PREFIX, CARLA_DEFAULT_WINE_AUTO_PREFIX, type=bool) | |||||
| optWineFallbackPrefix = settings.value(CARLA_KEY_WINE_FALLBACK_PREFIX, CARLA_DEFAULT_WINE_FALLBACK_PREFIX, type=str) | |||||
| optWineRtPrioEnabled = settings.value(CARLA_KEY_WINE_RT_PRIO_ENABLED, CARLA_DEFAULT_WINE_RT_PRIO_ENABLED, type=bool) | |||||
| optWineBaseRtPrio = settings.value(CARLA_KEY_WINE_BASE_RT_PRIO, CARLA_DEFAULT_WINE_BASE_RT_PRIO, type=int) | |||||
| optWineServerRtPrio = settings.value(CARLA_KEY_WINE_SERVER_RT_PRIO, CARLA_DEFAULT_WINE_SERVER_RT_PRIO, type=int) | |||||
| host.set_engine_option(ENGINE_OPTION_WINE_EXECUTABLE, 0, optWineExecutable) | |||||
| host.set_engine_option(ENGINE_OPTION_WINE_AUTO_PREFIX, 1 if optWineAutoPrefix else 0, "") | |||||
| host.set_engine_option(ENGINE_OPTION_WINE_FALLBACK_PREFIX, 0, os.path.expanduser(optWineFallbackPrefix)) | |||||
| host.set_engine_option(ENGINE_OPTION_WINE_RT_PRIO_ENABLED, 1 if optWineRtPrioEnabled else 0, "") | |||||
| host.set_engine_option(ENGINE_OPTION_WINE_BASE_RT_PRIO, optWineBaseRtPrio, "") | |||||
| host.set_engine_option(ENGINE_OPTION_WINE_SERVER_RT_PRIO, optWineServerRtPrio, "") | |||||
| # -------------------------------------------------------------------------------------------------------- | # -------------------------------------------------------------------------------------------------------- | ||||
| # return selected driver name | # return selected driver name | ||||
| @@ -331,6 +331,18 @@ const char* EngineOption2Str(const EngineOption option) noexcept | |||||
| return "ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR"; | return "ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR"; | ||||
| case ENGINE_OPTION_FRONTEND_WIN_ID: | case ENGINE_OPTION_FRONTEND_WIN_ID: | ||||
| return "ENGINE_OPTION_FRONTEND_WIN_ID"; | return "ENGINE_OPTION_FRONTEND_WIN_ID"; | ||||
| case ENGINE_OPTION_WINE_EXECUTABLE: | |||||
| return "ENGINE_OPTION_WINE_EXECUTABLE"; | |||||
| case ENGINE_OPTION_WINE_AUTO_PREFIX: | |||||
| return "ENGINE_OPTION_WINE_AUTO_PREFIX"; | |||||
| case ENGINE_OPTION_WINE_FALLBACK_PREFIX: | |||||
| return "ENGINE_OPTION_WINE_FALLBACK_PREFIX"; | |||||
| case ENGINE_OPTION_WINE_RT_PRIO_ENABLED: | |||||
| return "ENGINE_OPTION_WINE_RT_PRIO_ENABLED"; | |||||
| case ENGINE_OPTION_WINE_BASE_RT_PRIO: | |||||
| return "ENGINE_OPTION_WINE_BASE_RT_PRIO"; | |||||
| case ENGINE_OPTION_WINE_SERVER_RT_PRIO: | |||||
| return "ENGINE_OPTION_WINE_SERVER_RT_PRIO"; | |||||
| case ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT: | case ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT: | ||||
| return "ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT"; | return "ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT"; | ||||
| } | } | ||||