Browse Source

Start settings for Wine

tags/1.9.8
falkTX 8 years ago
parent
commit
09a0083eb2
10 changed files with 515 additions and 14 deletions
  1. +1
    -0
      resources/resources.qrc
  2. +334
    -1
      resources/ui/carla_settings.ui
  3. +31
    -1
      source/backend/CarlaBackend.h
  4. +19
    -0
      source/backend/CarlaEngine.hpp
  5. +2
    -0
      source/backend/CarlaStandalone.cpp
  6. +2
    -1
      source/carla_backend.py
  7. +19
    -2
      source/carla_database.py
  8. +7
    -2
      source/carla_host.py
  9. +82
    -7
      source/carla_settings.py
  10. +18
    -0
      source/carla_shared.py

+ 1
- 0
resources/resources.qrc View File

@@ -42,6 +42,7 @@
<file>48x48/juce.png</file>
<file>48x48/folder.png</file>
<file>48x48/warning.png</file>
<file>48x48/wine.png</file>

<file>48x48/carla.png</file>
<file>48x48/carla-control.png</file>


+ 334
- 1
resources/ui/carla_settings.ui View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>612</width>
<height>465</height>
<height>484</height>
</rect>
</property>
<property name="minimumSize">
@@ -86,6 +86,11 @@
<string>paths</string>
</property>
</row>
<row>
<property name="text">
<string>wine</string>
</property>
</row>
<row>
<property name="text">
<string>experimental</string>
@@ -172,6 +177,24 @@
</property>
</item>
<item row="4" column="0">
<property name="text">
<string>Wine</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/48x48/wine.png</normaloff>:/48x48/wine.png</iconset>
</property>
<property name="flags">
<set>ItemIsSelectable|ItemIsEnabled</set>
</property>
</item>
<item row="5" column="0">
<property name="text">
<string>Experimental</string>
</property>
@@ -1380,6 +1403,290 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="page_wine">
<layout class="QVBoxLayout" name="verticalLayout_25">
<property name="margin">
<number>2</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_17">
<item>
<widget class="QLabel" name="label_29">
<property name="text">
<string>&lt;b&gt;Wine&lt;/b&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_26">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_icon_engine_4">
<property name="text">
<string notr="true"/>
</property>
<property name="pixmap">
<pixmap resource="../resources.qrc">:/48x48/wine.png</pixmap>
</property>
<property name="alignment">
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="group_wine_exec">
<property name="title">
<string>Executable</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_18">
<item>
<widget class="QLabel" name="label_8">
<property name="text">
<string>Path to 'wine' binary:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="le_wine_exec"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="group_wine_prefix">
<property name="title">
<string>Prefix</string>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="cb_wine_prefix_detect">
<property name="text">
<string>Auto-detect Wine prefix based on plugin filename</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Fallback:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="le_wine_prefix_fallback"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="group_wine_realtime">
<property name="title">
<string>Realtime Priority</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="1" column="3">
<spacer name="horizontalSpacer_28">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="3">
<spacer name="horizontalSpacer_27">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<widget class="QSpinBox" name="sb_wine_base_prio">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>89</number>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Base priority:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_3">
<property name="text">
<string>WineServer priority:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QSpinBox" name="sb_wine_server_prio">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>99</number>
</property>
</widget>
</item>
<item row="0" column="0">
<spacer name="horizontalSpacer_29">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<spacer name="horizontalSpacer_30">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_14">
<item>
<spacer name="horizontalSpacer_24">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_26">
<property name="maximumSize">
<size>
<width>22</width>
<height>22</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="../resources.qrc">:/16x16/dialog-information.png</pixmap>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_27">
<property name="text">
<string>These options are not available for Carla as plugin</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_25">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>115</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_28">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>5</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="page_experimental">
<layout class="QVBoxLayout" name="verticalLayout_21">
<property name="margin">
@@ -1494,6 +1801,16 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="ch_exp_wine_bridges">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Enable Wine bridges</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="ch_exp_jack_apps">
<property name="text">
@@ -1753,5 +2070,21 @@ This mode is not available for VST plugins.</string>
</hint>
</hints>
</connection>
<connection>
<sender>cb_exp_plugin_bridges</sender>
<signal>toggled(bool)</signal>
<receiver>ch_exp_wine_bridges</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>402</x>
<y>122</y>
</hint>
<hint type="destinationlabel">
<x>402</x>
<y>145</y>
</hint>
</hints>
</connection>
</connections>
</ui>

+ 31
- 1
source/backend/CarlaBackend.h View File

@@ -1090,10 +1090,40 @@ typedef enum {
*/
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 diabled, and WINEPREFIX is not set.
*/
ENGINE_OPTION_WINE_FALLBACK_PREFIX = 20,

/*!
* Enable realtie 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.
*/
ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT = 18
ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT = 24

} EngineOption;



+ 19
- 0
source/backend/CarlaEngine.hpp View File

@@ -254,6 +254,25 @@ struct CARLA_API EngineOptions {
bool preventBadBehaviour;
uintptr_t frontendWinId;

struct Wine {
const char* exec;

bool autoPrefix;
const char* fallbackPrefix;

bool rtPrio;
int baseRtPrio;
int serverRtPrio;

Wine()
: exec(nullptr),
autoPrefix(true),
fallbackPrefix(nullptr),
rtPrio(true),
baseRtPrio(15),
serverRtPrio(10) {}
} wine;

#ifndef DOXYGEN
EngineOptions() noexcept;
~EngineOptions() noexcept;


+ 2
- 0
source/backend/CarlaStandalone.cpp View File

@@ -224,6 +224,8 @@ static void carla_engine_init_common()
gStandalone.engine->setOption(CB::ENGINE_OPTION_AUDIO_BUFFER_SIZE, static_cast<int>(gStandalone.engineOptions.audioBufferSize), nullptr);
gStandalone.engine->setOption(CB::ENGINE_OPTION_AUDIO_SAMPLE_RATE, static_cast<int>(gStandalone.engineOptions.audioSampleRate), nullptr);

gStandalone.engine->setOption(CB::ENGINE_OPTION_AUDIO_SAMPLE_RATE, static_cast<int>(gStandalone.engineOptions.audioSampleRate), nullptr);

if (gStandalone.engineOptions.audioDevice != nullptr)
gStandalone.engine->setOption(CB::ENGINE_OPTION_AUDIO_DEVICE, 0, gStandalone.engineOptions.audioDevice);



+ 2
- 1
source/carla_backend.py View File

@@ -1243,8 +1243,9 @@ class CarlaHostMeta(object):
self.preferPluginBridges = False
self.preferUIBridges = False
self.preventBadBehaviour = False
self.showPluginBridges = False
self.showLogs = False
self.showPluginBridges = False
self.showWineBridges = False
self.uiBridgesTimeout = 0
self.uisAlwaysOnTop = False



+ 19
- 2
source/carla_database.py View File

@@ -1073,6 +1073,18 @@ class PluginRefreshW(QDialog):
self.ui.label_win64.hide()
self.ui.sep_format.hide()

elif not host.showWineBridges:
self.ui.ch_win32.setChecked(False)
self.ui.ch_win32.setEnabled(False)
self.ui.ch_win32.setVisible(False)
self.ui.ch_win64.setChecked(False)
self.ui.ch_win64.setEnabled(False)
self.ui.ch_win64.setVisible(False)
self.ui.ico_win32.hide()
self.ui.ico_win64.hide()
self.ui.label_win32.hide()
self.ui.label_win64.hide()

# ----------------------------------------------------------------------------------------------------
# Resize to minimum size, as it's very likely UI stuff was hidden

@@ -1319,9 +1331,9 @@ class PluginDatabaseW(QDialog):
self.loadSettings()

# ----------------------------------------------------------------------------------------------------
# Disable bridges (experimental for now)
# Disable bridges if not enabled in settings

if not host.experimental:
if not host.showPluginBridges:
self.ui.ch_native.setChecked(True)
self.ui.ch_native.setEnabled(False)
self.ui.ch_native.setVisible(False)
@@ -1333,6 +1345,11 @@ class PluginDatabaseW(QDialog):
self.ui.ch_bridged_wine.setVisible(False)
self.ui.l_arch.setVisible(False)

elif not host.showWineBridges:
self.ui.ch_bridged_wine.setChecked(False)
self.ui.ch_bridged_wine.setEnabled(False)
self.ui.ch_bridged_wine.setVisible(False)

# ----------------------------------------------------------------------------------------------------
# Set-up connections



+ 7
- 2
source/carla_host.py View File

@@ -2554,15 +2554,20 @@ def loadHostSettings(host):
except:
host.preventBadBehaviour = CARLA_DEFAULT_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR

try:
host.showLogs = settings.value(CARLA_KEY_MAIN_SHOW_LOGS, CARLA_DEFAULT_MAIN_SHOW_LOGS, type=bool)
except:
host.showLogs = CARLA_DEFAULT_MAIN_SHOW_LOGS

try:
host.showPluginBridges = settings.value(CARLA_KEY_EXPERIMENTAL_PLUGIN_BRIDGES, CARLA_DEFAULT_EXPERIMENTAL_PLUGIN_BRIDGES, type=bool)
except:
host.showPluginBridges = CARLA_DEFAULT_EXPERIMENTAL_PLUGIN_BRIDGES

try:
host.showLogs = settings.value(CARLA_KEY_MAIN_SHOW_LOGS, CARLA_DEFAULT_MAIN_SHOW_LOGS, type=bool)
host.showWineBridges = settings.value(CARLA_KEY_EXPERIMENTAL_WINE_BRIDGES, CARLA_DEFAULT_EXPERIMENTAL_WINE_BRIDGES, type=bool)
except:
host.showLogs = CARLA_DEFAULT_MAIN_SHOW_LOGS
host.showWineBridges = CARLA_DEFAULT_EXPERIMENTAL_WINE_BRIDGES

try:
host.uiBridgesTimeout = settings.value(CARLA_KEY_ENGINE_UI_BRIDGES_TIMEOUT, CARLA_DEFAULT_UI_BRIDGES_TIMEOUT, type=int)


+ 82
- 7
source/carla_settings.py View File

@@ -193,8 +193,9 @@ class CarlaSettingsW(QDialog):
TAB_INDEX_CANVAS = 1
TAB_INDEX_ENGINE = 2
TAB_INDEX_PATHS = 3
TAB_INDEX_EXPERIMENTAL = 4
TAB_INDEX_NONE = 5
TAB_INDEX_WINE = 4
TAB_INDEX_EXPERIMENTAL = 5
TAB_INDEX_NONE = 6

# Path indexes
PATH_INDEX_LADSPA = 0
@@ -275,6 +276,11 @@ class CarlaSettingsW(QDialog):

if host.isControl or host.isPlugin:
self.ui.ch_exp_load_lib_global.hide()
self.ui.lw_page.hideRow(self.TAB_INDEX_WINE)

if not LINUX:
self.ui.ch_exp_wine_bridges.setVisible(False)
self.ui.lw_page.hideRow(self.TAB_INDEX_WINE)

# FIXME, pipes on win32 not working
if WINDOWS:
@@ -315,6 +321,7 @@ class CarlaSettingsW(QDialog):
self.ui.lw_sfz.currentRowChanged.connect(self.slot_pluginPathRowChanged)

self.ui.ch_main_experimental.toggled.connect(self.slot_enableExperimental)
self.ui.ch_exp_wine_bridges.toggled.connect(self.slot_enableWineBridges)
self.ui.cb_canvas_eyecandy.toggled.connect(self.slot_canvasEyeCandyToggled)
self.ui.cb_canvas_fancy_eyecandy.toggled.connect(self.slot_canvasFancyEyeCandyToggled)

@@ -374,6 +381,10 @@ class CarlaSettingsW(QDialog):

if not self.host.experimental:
self.ui.lw_page.hideRow(self.TAB_INDEX_EXPERIMENTAL)
self.ui.lw_page.hideRow(self.TAB_INDEX_WINE)

elif not self.host.showWineBridges:
self.ui.lw_page.hideRow(self.TAB_INDEX_WINE)

# ----------------------------------------------------------------------------------------------------
# Engine
@@ -415,6 +426,8 @@ class CarlaSettingsW(QDialog):
self.ui.ch_engine_force_stereo.setChecked(self.host.forceStereo or not self.ui.ch_engine_force_stereo.isEnabled())
self.ui.ch_engine_prefer_plugin_bridges.setChecked(self.host.preferPluginBridges)
self.ui.ch_exp_export_lv2.setChecked(self.host.exportLV2)
self.ui.cb_exp_plugin_bridges.setChecked(self.host.showPluginBridges)
self.ui.ch_exp_wine_bridges.setChecked(self.host.showWineBridges)

# ----------------------------------------------------------------------------------------------------
# Paths
@@ -470,11 +483,34 @@ class CarlaSettingsW(QDialog):
self.ui.lw_sfz.addItem(sfz)

# ----------------------------------------------------------------------------------------------------
# Experimental
# Wine

self.ui.le_wine_exec.setText(settings.value(CARLA_KEY_WINE_EXECUTABLE,
CARLA_DEFAULT_WINE_EXECUTABLE,
type=str))

self.ui.cb_wine_prefix_detect.setChecked(settings.value(CARLA_KEY_WINE_AUTO_PREFIX,
CARLA_DEFAULT_WINE_AUTO_PREFIX,
type=bool))

self.ui.le_wine_prefix_fallback.setText(settings.value(CARLA_KEY_WINE_FALLBACK_PREFIX,
CARLA_DEFAULT_WINE_FALLBACK_PREFIX,
type=str))

self.ui.cb_exp_plugin_bridges.setChecked(settings.value(CARLA_KEY_EXPERIMENTAL_PLUGIN_BRIDGES,
CARLA_DEFAULT_EXPERIMENTAL_PLUGIN_BRIDGES,
type=bool))
self.ui.group_wine_realtime.setChecked(settings.value(CARLA_KEY_WINE_RT_PRIO_ENABLED,
CARLA_DEFAULT_WINE_RT_PRIO_ENABLED,
type=bool))

self.ui.sb_wine_base_prio.setValue(settings.value(CARLA_KEY_WINE_BASE_RT_PRIO,
CARLA_DEFAULT_WINE_BASE_RT_PRIO,
type=int))

self.ui.sb_wine_server_prio.setValue(settings.value(CARLA_KEY_WINE_SERVER_RT_PRIO,
CARLA_DEFAULT_WINE_SERVER_RT_PRIO,
type=int))

# ----------------------------------------------------------------------------------------------------
# Experimental

self.ui.ch_exp_jack_apps.setChecked(settings.value(CARLA_KEY_EXPERIMENTAL_JACK_APPS,
CARLA_DEFAULT_EXPERIMENTAL_JACK_APPS,
@@ -558,6 +594,8 @@ class CarlaSettingsW(QDialog):
self.host.preferPluginBridges = self.ui.ch_engine_prefer_plugin_bridges.isChecked()
self.host.preferUIBridges = self.ui.ch_engine_prefer_ui_bridges.isChecked()
self.host.showLogs = self.ui.ch_main_show_logs.isChecked()
self.host.showPluginBridges = self.ui.cb_exp_plugin_bridges.isChecked()
self.host.showWineBridges = self.ui.ch_exp_wine_bridges.isChecked()
self.host.uiBridgesTimeout = self.ui.sb_engine_ui_bridges_timeout.value()
self.host.uisAlwaysOnTop = self.ui.ch_engine_uis_always_on_top.isChecked()

@@ -581,6 +619,8 @@ class CarlaSettingsW(QDialog):
settings.setValue(CARLA_KEY_ENGINE_UI_BRIDGES_TIMEOUT, self.host.uiBridgesTimeout)
settings.setValue(CARLA_KEY_ENGINE_UIS_ALWAYS_ON_TOP, self.host.uisAlwaysOnTop)
settings.setValue(CARLA_KEY_EXPERIMENTAL_EXPORT_LV2, self.host.exportLV2)
settings.setValue(CARLA_KEY_EXPERIMENTAL_PLUGIN_BRIDGES, self.host.showPluginBridges)
settings.setValue(CARLA_KEY_EXPERIMENTAL_WINE_BRIDGES, self.host.showWineBridges)

# ----------------------------------------------------------------------------------------------------
# Paths
@@ -636,10 +676,23 @@ class CarlaSettingsW(QDialog):
settings.setValue(CARLA_KEY_PATHS_SF2, sf2s)
settings.setValue(CARLA_KEY_PATHS_SFZ, sfzs)

# ----------------------------------------------------------------------------------------------------
# Wine

settings.setValue(CARLA_KEY_EXPERIMENTAL_JACK_APPS, self.ui.ch_exp_jack_apps.isChecked())
settings.setValue(CARLA_KEY_EXPERIMENTAL_LOAD_LIB_GLOBAL, self.ui.ch_exp_load_lib_global.isChecked())
settings.setValue(CARLA_KEY_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR, self.ui.ch_exp_prevent_bad_behaviour.isChecked())

settings.setValue(CARLA_KEY_WINE_EXECUTABLE, self.ui.le_wine_exec.text())
settings.setValue(CARLA_KEY_WINE_AUTO_PREFIX, self.ui.cb_wine_prefix_detect.isChecked())
settings.setValue(CARLA_KEY_WINE_FALLBACK_PREFIX, self.ui.le_wine_prefix_fallback.text())
settings.setValue(CARLA_KEY_WINE_RT_PRIO_ENABLED, self.ui.group_wine_realtime.isChecked())
settings.setValue(CARLA_KEY_WINE_BASE_RT_PRIO, self.ui.sb_wine_base_prio.value())
settings.setValue(CARLA_KEY_WINE_SERVER_RT_PRIO, self.ui.sb_wine_server_prio.value())

# ----------------------------------------------------------------------------------------------------
# Experimental

settings.setValue(CARLA_KEY_EXPERIMENTAL_PLUGIN_BRIDGES, self.ui.cb_exp_plugin_bridges.isChecked())
settings.setValue(CARLA_KEY_EXPERIMENTAL_JACK_APPS, self.ui.ch_exp_jack_apps.isChecked())
settings.setValue(CARLA_KEY_EXPERIMENTAL_LOAD_LIB_GLOBAL, self.ui.ch_exp_load_lib_global.isChecked())
settings.setValue(CARLA_KEY_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR, self.ui.ch_exp_prevent_bad_behaviour.isChecked())
@@ -770,6 +823,17 @@ class CarlaSettingsW(QDialog):
if not path: continue
self.ui.lw_sfz.addItem(path)

# ----------------------------------------------------------------------------------------------------
# Wine

elif self.ui.lw_page.currentRow() == self.TAB_INDEX_WINE:
self.ui.le_wine_exec.setText(CARLA_DEFAULT_WINE_EXECUTABLE)
self.ui.cb_wine_prefix_detect.setChecked(CARLA_DEFAULT_WINE_AUTO_PREFIX)
self.ui.le_wine_prefix_fallback.setText(CARLA_DEFAULT_WINE_FALLBACK_PREFIX)
self.ui.group_wine_realtime.setChecked(CARLA_DEFAULT_WINE_RT_PRIO_ENABLED)
self.ui.sb_wine_base_prio.setValue(CARLA_DEFAULT_WINE_BASE_RT_PRIO)
self.ui.sb_wine_server_prio.setValue(CARLA_DEFAULT_WINE_SERVER_RT_PRIO)

# ----------------------------------------------------------------------------------------------------
# Experimental

@@ -779,6 +843,7 @@ class CarlaSettingsW(QDialog):
def resetExperimentalSettings(self):
# Forever experimental
self.ui.cb_exp_plugin_bridges.setChecked(CARLA_DEFAULT_EXPERIMENTAL_PLUGIN_BRIDGES)
self.ui.ch_exp_wine_bridges.setChecked(CARLA_DEFAULT_EXPERIMENTAL_WINE_BRIDGES)
self.ui.ch_exp_jack_apps.setChecked(CARLA_DEFAULT_EXPERIMENTAL_JACK_APPS)
self.ui.ch_exp_export_lv2.setChecked(CARLA_DEFAULT_EXPERIMENTAL_LV2_EXPORT)
self.ui.ch_exp_load_lib_global.setChecked(CARLA_DEFAULT_EXPERIMENTAL_LOAD_LIB_GLOBAL)
@@ -797,8 +862,18 @@ class CarlaSettingsW(QDialog):
def slot_enableExperimental(self, toggled):
if toggled:
self.ui.lw_page.showRow(self.TAB_INDEX_EXPERIMENTAL)
if self.ui.ch_exp_wine_bridges.isChecked():
self.ui.lw_page.showRow(self.TAB_INDEX_WINE)
else:
self.ui.lw_page.hideRow(self.TAB_INDEX_EXPERIMENTAL)
self.ui.lw_page.hideRow(self.TAB_INDEX_WINE)

@pyqtSlot(bool)
def slot_enableWineBridges(self, toggled):
if toggled:
self.ui.lw_page.showRow(self.TAB_INDEX_WINE)
else:
self.ui.lw_page.hideRow(self.TAB_INDEX_WINE)

@pyqtSlot(bool)
def slot_canvasEyeCandyToggled(self, toggled):


+ 18
- 0
source/carla_shared.py View File

@@ -227,7 +227,15 @@ CARLA_KEY_PATHS_GIG = "Paths/GIG"
CARLA_KEY_PATHS_SF2 = "Paths/SF2"
CARLA_KEY_PATHS_SFZ = "Paths/SFZ"

CARLA_KEY_WINE_EXECUTABLE = "Wine/Executable" # str
CARLA_KEY_WINE_AUTO_PREFIX = "Wine/AutoPrefix" # bool
CARLA_KEY_WINE_FALLBACK_PREFIX = "Wine/FallbackPrefix" # str
CARLA_KEY_WINE_RT_PRIO_ENABLED = "Wine/RtPrioEnabled" # bool
CARLA_KEY_WINE_BASE_RT_PRIO = "Wine/BaseRtPrio" # int
CARLA_KEY_WINE_SERVER_RT_PRIO = "Wine/ServerRtPrio" # int

CARLA_KEY_EXPERIMENTAL_PLUGIN_BRIDGES = "Experimental/PluginBridges" # bool
CARLA_KEY_EXPERIMENTAL_WINE_BRIDGES = "Experimental/WineBridges" # bool
CARLA_KEY_EXPERIMENTAL_JACK_APPS = "Experimental/JackApplications" # bool
CARLA_KEY_EXPERIMENTAL_EXPORT_LV2 = "Experimental/ExportLV2" # bool
CARLA_KEY_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR = "Experimental/PreventBadBehaviour" # bool
@@ -289,7 +297,17 @@ else:
CARLA_DEFAULT_PROCESS_MODE = ENGINE_PROCESS_MODE_PATCHBAY
CARLA_DEFAULT_TRANSPORT_MODE = ENGINE_TRANSPORT_MODE_INTERNAL

# Wine
CARLA_DEFAULT_WINE_EXECUTABLE = "wine"
CARLA_DEFAULT_WINE_AUTO_PREFIX = True
CARLA_DEFAULT_WINE_FALLBACK_PREFIX = os.path.expanduser("~/.wine")
CARLA_DEFAULT_WINE_RT_PRIO_ENABLED = True
CARLA_DEFAULT_WINE_BASE_RT_PRIO = 15
CARLA_DEFAULT_WINE_SERVER_RT_PRIO = 10

# Experimental
CARLA_DEFAULT_EXPERIMENTAL_PLUGIN_BRIDGES = False
CARLA_DEFAULT_EXPERIMENTAL_WINE_BRIDGES = False
CARLA_DEFAULT_EXPERIMENTAL_JACK_APPS = False
CARLA_DEFAULT_EXPERIMENTAL_LV2_EXPORT = False
CARLA_DEFAULT_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR = False


Loading…
Cancel
Save