diff --git a/doc/Carla-TODO b/doc/Carla-TODO index 613676c..ebfe4d4 100644 --- a/doc/Carla-TODO +++ b/doc/Carla-TODO @@ -18,6 +18,7 @@ ENGINE: - implement Haiku Media support (based from JACK?) - implement latency in continuous-rack mode - DSSI/LV2/VST version (needs add-new support on control side) + - Handle sample-rate changes in JACK (made possible by switch-master) LADSPA: diff --git a/doc/TODO b/doc/TODO index 2f9903f..6350d5f 100644 --- a/doc/TODO +++ b/doc/TODO @@ -12,8 +12,12 @@ GUI: ------------------- - APPS - +Catia: + - Handle sample-rate changes in JACK (made possible by switch-master) + Claudia: - Cleanup DB + - Handle sample-rate changes in JACK (made possible by switch-master) ------------------- - MODULES - diff --git a/resources/ui/cadence.ui b/resources/ui/cadence.ui index 6af0a51..86c0eed 100644 --- a/resources/ui/cadence.ui +++ b/resources/ui/cadence.ui @@ -6,8 +6,8 @@ 0 0 - 753 - 579 + 739 + 549 @@ -24,7 +24,7 @@ System - + @@ -42,7 +42,21 @@ - + + + + Qt::Horizontal + + + + + + + Qt::Vertical + + + + @@ -183,7 +197,7 @@ - + @@ -401,60 +415,66 @@ - - + + Start - + Stop - + Force Restart - + Configure - - - - - + + + + Switch Master! + + + + Qt::Horizontal + + QSizePolicy::Preferred + - 40 + 38 20 - + Auto-start JACK or LADISH at login - + ... @@ -468,6 +488,12 @@ + + + 0 + 0 + + JACK Bridges @@ -477,13 +503,19 @@ + + + 0 + 0 + + 0 0 - 351 - 117 + 366 + 120 @@ -612,10 +644,13 @@ Qt::Vertical + + QSizePolicy::Preferred + 20 - 40 + 20 @@ -627,8 +662,8 @@ 0 0 - 290 - 77 + 366 + 117 @@ -750,10 +785,13 @@ Qt::Vertical + + QSizePolicy::Preferred + 20 - 40 + 20 @@ -765,8 +803,8 @@ 0 0 - 204 - 77 + 366 + 117 @@ -881,10 +919,13 @@ Qt::Vertical + + QSizePolicy::Preferred + 20 - 40 + 20 @@ -914,20 +955,6 @@ - - - - Qt::Vertical - - - - - - - Qt::Horizontal - - - @@ -1484,7 +1511,7 @@ 0 0 - 94 + 76 76 @@ -1502,7 +1529,7 @@ 0 0 - 94 + 89 76 @@ -1520,7 +1547,7 @@ 0 0 - 94 + 89 76 @@ -1538,7 +1565,7 @@ 0 0 - 94 + 89 76 diff --git a/src/cadence.py b/src/cadence.py index 029c71b..ec331d3 100755 --- a/src/cadence.py +++ b/src/cadence.py @@ -702,6 +702,9 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): self.m_lastAlsaIndexType = -2 # invalid + if not jacklib.JACK2: + self.b_jack_switchmaster.setEnabled(False) + # ------------------------------------------------------------- # Set-up GUI (System Information) @@ -997,6 +1000,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): self.connect(self.b_jack_stop, SIGNAL("clicked()"), SLOT("slot_JackServerStop()")) self.connect(self.b_jack_restart, SIGNAL("clicked()"), SLOT("slot_JackServerForceRestart()")) self.connect(self.b_jack_configure, SIGNAL("clicked()"), SLOT("slot_JackServerConfigure()")) + self.connect(self.b_jack_switchmaster, SIGNAL("clicked()"), SLOT("slot_JackServerSwitchMaster()")) self.connect(self.tb_jack_options, SIGNAL("clicked()"), SLOT("slot_JackOptions()")) self.connect(self.b_alsa_start, SIGNAL("clicked()"), SLOT("slot_AlsaBridgeStart()")) @@ -1127,6 +1131,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): self.b_jack_stop.setEnabled(False) self.b_jack_restart.setEnabled(False) self.b_jack_configure.setEnabled(False) + self.b_jack_switchmaster.setEnabled(False) self.groupBox_bridges.setEnabled(False) if DBus.a2j: @@ -1182,6 +1187,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): self.b_jack_start.setEnabled(False) self.b_jack_stop.setEnabled(True) + self.b_jack_switchmaster.setEnabled(True) self.systray.setActionEnabled("jack_start", False) self.systray.setActionEnabled("jack_stop", True) @@ -1221,6 +1227,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): self.b_jack_start.setEnabled(True) self.b_jack_stop.setEnabled(False) + self.b_jack_switchmaster.setEnabled(False) if haveDBus: self.systray.setActionEnabled("jack_start", True) @@ -1468,6 +1475,16 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): jacksettingsW.exec_() del jacksettingsW + @pyqtSlot() + def slot_JackServerSwitchMaster(self): + try: + DBus.jack.SwitchMaster() + except: + QMessageBox.warning(self, self.tr("Warning"), self.tr("Failed to switch JACK master, please check the logs for more information.")) + return + + self.jackStarted() + @pyqtSlot() def slot_JackOptions(self): ToolBarJackDialog(self).exec_()