Browse Source

Fix Cadence code for the last commits

tags/v0.9.0
falkTX 12 years ago
parent
commit
df72125ae4
2 changed files with 80 additions and 59 deletions
  1. +79
    -58
      src/cadence.py
  2. +1
    -1
      src/claudia_launcher.py

+ 79
- 58
src/cadence.py View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-

# Cadence, JACK utilities
# Copyright (C) 2010-2012 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2010-2013 Filipe Coelho <falktx@falktx.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -16,20 +16,38 @@
#
# For a full copy of the GNU General Public License see the COPYING file

# ------------------------------------------------------------------------------------------------------------
# Imports (Global)

from platform import architecture
from PyQt4.QtCore import QFileSystemWatcher, QThread
from PyQt4.QtGui import QApplication, QLabel, QMainWindow, QSizePolicy
from subprocess import getoutput

# ------------------------------------------------------------------------------------------------------------
# Imports (Custom Stuff)
import ui_cadence
import ui_cadence_tb_jack, ui_cadence_tb_alsa, ui_cadence_tb_a2j, ui_cadence_tb_pa, ui_cadence_rwait

import systray
import ui_cadence
import ui_cadence_tb_jack
import ui_cadence_tb_alsa
import ui_cadence_tb_a2j
import ui_cadence_tb_pa
import ui_cadence_rwait
from shared_cadence import *
from shared_canvasjack import *
from shared_settings import *

# ------------------------------------------------------------------------------------------------------------
# Safe import getoutput

if sys.version_info >= (3, 0):
from subprocess import getoutput
else:
from commands import getoutput

# ------------------------------------------------------------------------------------------------------------
# Try Import DBus

try:
import dbus
from dbus.mainloop.qt import DBusQtMainLoop
@@ -37,6 +55,9 @@ try:
except:
haveDBus = False

# ------------------------------------------------------------------------------------------------------------
# Check for PulseAudio and Wine

havePulseAudio = os.path.exists("/usr/bin/pulseaudio")
haveWine = os.path.exists("/usr/bin/regedit")

@@ -503,7 +524,7 @@ class ForceRestartThread(QThread):
# Connect to jackdbus
self.parent().DBusReconnect()

if not DBus.jack:
if not gDBus.jack:
return

for x in range(30):
@@ -517,7 +538,7 @@ class ForceRestartThread(QThread):
self.emit(SIGNAL("progressChanged(int)"), 90)

# Start it
DBus.jack.StartServer()
gDBus.jack.StartServer()
self.emit(SIGNAL("progressChanged(int)"), 93)

# If we made it this far, then JACK is started
@@ -533,10 +554,10 @@ class ForceRestartThread(QThread):
self.emit(SIGNAL("progressChanged(int)"), 94)

# ALSA-MIDI
if GlobalSettings.value("A2J/AutoStart", True, type=bool) and DBus.a2j and not bool(DBus.a2j.is_started()):
if GlobalSettings.value("A2J/AutoStart", True, type=bool) and gDBus.a2j and not bool(gDBus.a2j.is_started()):
a2jExportHW = GlobalSettings.value("A2J/ExportHW", True, type=bool)
DBus.a2j.set_hw_export(a2jExportHW)
DBus.a2j.start()
gDBus.a2j.set_hw_export(a2jExportHW)
gDBus.a2j.start()

self.emit(SIGNAL("progressChanged(int)"), 96)

@@ -590,7 +611,7 @@ class ToolBarJackDialog(QDialog, ui_cadence_tb_jack.Ui_Dialog):
if GlobalSettings.value("JACK/AutoLoadLadishStudio", False, type=bool):
self.rb_ladish.setChecked(True)
self.m_ladishLoaded = True
elif "org.ladish" in DBus.bus.list_names():
elif "org.ladish" in gDBus.bus.list_names():
self.m_ladishLoaded = True
else:
self.rb_ladish.setEnabled(False)
@@ -603,10 +624,10 @@ class ToolBarJackDialog(QDialog, ui_cadence_tb_jack.Ui_Dialog):
self.connect(self.rb_ladish, SIGNAL("clicked()"), SLOT("slot_maybeFillStudioNames()"))

def fillStudioNames(self):
DBus.ladish_control = DBus.bus.get_object("org.ladish", "/org/ladish/Control")
gDBus.ladish_control = gDBus.bus.get_object("org.ladish", "/org/ladish/Control")

ladishStudioName = dbus.String(GlobalSettings.value("JACK/LadishStudioName", "", type=str))
ladishStudioListDump = DBus.ladish_control.GetStudioList()
ladishStudioListDump = gDBus.ladish_control.GetStudioList()

if len(ladishStudioListDump) == 0:
self.rb_ladish.setEnabled(False)
@@ -733,7 +754,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.m_curGovCPUs = []

try:
fBus = dbus.SystemBus(mainloop=DBus.loop)
fBus = dbus.SystemBus(mainloop=gDBus.loop)
fProxy = fBus.get_object("com.ubuntu.IndicatorCpufreqSelector", "/Selector", introspect=False)
haveFreqSelector = True
except:
@@ -1138,28 +1159,28 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.DBusReconnect()

if haveDBus:
DBus.bus.add_signal_receiver(self.DBusSignalReceiver, destination_keyword='dest', path_keyword='path',
gDBus.bus.add_signal_receiver(self.DBusSignalReceiver, destination_keyword='dest', path_keyword='path',
member_keyword='member', interface_keyword='interface', sender_keyword='sender', )

def DBusReconnect(self):
if haveDBus:
try:
DBus.jack = DBus.bus.get_object("org.jackaudio.service", "/org/jackaudio/Controller")
DBus.patchbay = dbus.Interface(DBus.jack, "org.jackaudio.JackPatchbay")
jacksettings.initBus(DBus.bus)
gDBus.jack = gDBus.bus.get_object("org.jackaudio.service", "/org/jackaudio/Controller")
gDBus.patchbay = dbus.Interface(gDBus.jack, "org.jackaudio.JackPatchbay")
jacksettings.initBus(gDBus.bus)
except:
DBus.jack = None
DBus.patchbay = None
gDBus.jack = None
gDBus.patchbay = None

try:
DBus.a2j = dbus.Interface(DBus.bus.get_object("org.gna.home.a2jmidid", "/"), "org.gna.home.a2jmidid.control")
gDBus.a2j = dbus.Interface(gDBus.bus.get_object("org.gna.home.a2jmidid", "/"), "org.gna.home.a2jmidid.control")
except:
DBus.a2j = None
gDBus.a2j = None

if DBus.jack:
if DBus.jack.IsStarted():
if gDBus.jack:
if gDBus.jack.IsStarted():
# Check for pulseaudio in jack graph
version, groups, conns = DBus.patchbay.GetGraph(0)
version, groups, conns = gDBus.patchbay.GetGraph(0)

for group_id, group_name, ports in groups:
if group_name == "alsa2jack":
@@ -1189,8 +1210,8 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.b_jack_switchmaster.setEnabled(False)
self.groupBox_bridges.setEnabled(False)

if DBus.a2j:
if DBus.a2j.is_started():
if gDBus.a2j:
if gDBus.a2j.is_started():
self.a2jStarted()
else:
self.a2jStopped()
@@ -1221,7 +1242,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.emit(SIGNAL("DBusJackServerStoppedCallback()"))

elif kwds['interface'] == "org.jackaudio.JackPatchbay":
if DBus.patchbay and kwds['path'] == DBus.patchbay.object_path:
if gDBus.patchbay and kwds['path'] == gDBus.patchbay.object_path:
if DEBUG: print("org.jackaudio.JackPatchbay,", kwds['member'])
if kwds['member'] == "ClientAppeared":
self.emit(SIGNAL("DBusJackClientAppearedCallback(int, QString)"), args[iJackClientId], args[iJackClientName])
@@ -1236,9 +1257,9 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.emit(SIGNAL("DBusA2JBridgeStoppedCallback()"))

def jackStarted(self):
self.m_last_dsp_load = DBus.jack.GetLoad()
self.m_last_xruns = DBus.jack.GetXruns()
self.m_last_buffer_size = DBus.jack.GetBufferSize()
self.m_last_dsp_load = gDBus.jack.GetLoad()
self.m_last_xruns = gDBus.jack.GetXruns()
self.m_last_buffer_size = gDBus.jack.GetBufferSize()

self.b_jack_start.setEnabled(False)
self.b_jack_stop.setEnabled(True)
@@ -1249,7 +1270,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.label_jack_status.setText("Started")
self.label_jack_status_ico.setPixmap(self.pix_apply)

if DBus.jack.IsRealtime():
if gDBus.jack.IsRealtime():
self.label_jack_realtime.setText("Yes")
self.label_jack_realtime_ico.setPixmap(self.pix_apply)
else:
@@ -1259,12 +1280,12 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.label_jack_dsp.setText("%.2f%%" % self.m_last_dsp_load)
self.label_jack_xruns.setText(str(self.m_last_xruns))
self.label_jack_bfsize.setText("%i samples" % self.m_last_buffer_size)
self.label_jack_srate.setText("%i Hz" % DBus.jack.GetSampleRate())
self.label_jack_latency.setText("%.1f ms" % DBus.jack.GetLatency())
self.label_jack_srate.setText("%i Hz" % gDBus.jack.GetSampleRate())
self.label_jack_latency.setText("%.1f ms" % gDBus.jack.GetLatency())

self.m_timer500 = self.startTimer(500)

if DBus.a2j and not DBus.a2j.is_started():
if gDBus.a2j and not gDBus.a2j.is_started():
self.b_a2j_start.setEnabled(True)
self.systray.setActionEnabled("a2j_start", True)

@@ -1297,7 +1318,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.label_jack_srate.setText("---")
self.label_jack_latency.setText("---")

if DBus.a2j:
if gDBus.a2j:
self.b_a2j_start.setEnabled(False)
self.systray.setActionEnabled("a2j_start", False)

@@ -1319,7 +1340,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.label_bridge_a2j.setText(self.tr("ALSA MIDI Bridge is running"))

def a2jStopped(self):
jackRunning = bool(DBus.jack and DBus.jack.IsStarted())
jackRunning = bool(gDBus.jack and gDBus.jack.IsStarted())
self.b_a2j_start.setEnabled(jackRunning)
self.b_a2j_stop.setEnabled(False)
self.b_a2j_export_hw.setEnabled(True)
@@ -1352,7 +1373,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.systray.setActionEnabled("alsa_stop", True)
self.label_bridge_alsa.setText(self.tr("Using Cadence snd-aloop daemon, started"))
else:
jackRunning = bool(DBus.jack and DBus.jack.IsStarted())
jackRunning = bool(gDBus.jack and gDBus.jack.IsStarted())
self.b_alsa_start.setEnabled(jackRunning)
self.b_alsa_stop.setEnabled(False)
self.systray.setActionEnabled("alsa_start", jackRunning)
@@ -1406,14 +1427,14 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.systray.setActionEnabled("pulse_stop", True)
self.label_bridge_pulse.setText(self.tr("PulseAudio is started and bridged to JACK"))
else:
jackRunning = bool(DBus.jack and DBus.jack.IsStarted())
jackRunning = bool(gDBus.jack and gDBus.jack.IsStarted())
self.b_pulse_start.setEnabled(jackRunning)
self.b_pulse_stop.setEnabled(False)
self.systray.setActionEnabled("pulse_start", jackRunning)
self.systray.setActionEnabled("pulse_stop", False)
self.label_bridge_pulse.setText(self.tr("PulseAudio is started but not bridged"))
else:
jackRunning = bool(DBus.jack and DBus.jack.IsStarted())
jackRunning = bool(gDBus.jack and gDBus.jack.IsStarted())
self.b_pulse_start.setEnabled(jackRunning)
self.b_pulse_stop.setEnabled(False)
self.systray.setActionEnabled("pulse_start", jackRunning)
@@ -1501,20 +1522,20 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
def slot_JackServerStart(self):
self.saveSettings()
try:
DBus.jack.StartServer()
gDBus.jack.StartServer()
except:
QMessageBox.warning(self, self.tr("Warning"), self.tr("Failed to start JACK, please check the logs for more information."))

@pyqtSlot()
def slot_JackServerStop(self):
try:
DBus.jack.StopServer()
gDBus.jack.StopServer()
except:
QMessageBox.warning(self, self.tr("Warning"), self.tr("Failed to stop JACK, please check the logs for more information."))

@pyqtSlot()
def slot_JackServerForceRestart(self):
if DBus.jack.IsStarted():
if gDBus.jack.IsStarted():
ask = CustomMessageBox(self, QMessageBox.Warning, self.tr("Warning"),
self.tr("This will force kill all JACK applications!<br>Make sure to save your projects before continue."),
self.tr("Are you sure you want to force the restart of JACK?"))
@@ -1538,7 +1559,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
@pyqtSlot()
def slot_JackServerSwitchMaster(self):
try:
DBus.jack.SwitchMaster()
gDBus.jack.SwitchMaster()
except:
QMessageBox.warning(self, self.tr("Warning"), self.tr("Failed to switch JACK master, please check the logs for more information."))
return
@@ -1551,8 +1572,8 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):

@pyqtSlot()
def slot_JackClearXruns(self):
if DBus.jack:
DBus.jack.ResetXruns()
if gDBus.jack:
gDBus.jack.ResetXruns()

@pyqtSlot()
def slot_AlsaBridgeStart(self):
@@ -1620,20 +1641,20 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):

@pyqtSlot()
def slot_A2JBridgeStart(self):
DBus.a2j.start()
gDBus.a2j.start()

@pyqtSlot()
def slot_A2JBridgeStop(self):
DBus.a2j.stop()
gDBus.a2j.stop()

@pyqtSlot()
def slot_A2JBridgeExportHW(self):
ask = QMessageBox.question(self, self.tr("ALSA MIDI Hardware Export"), self.tr("Enable Hardware Export on the ALSA MIDI Bridge?"), QMessageBox.Yes|QMessageBox.No|QMessageBox.Cancel, QMessageBox.Yes)

if ask == QMessageBox.Yes:
DBus.a2j.set_hw_export(True)
gDBus.a2j.set_hw_export(True)
elif ask == QMessageBox.No:
DBus.a2j.set_hw_export(False)
gDBus.a2j.set_hw_export(False)

@pyqtSlot()
def slot_A2JBridgeOptions(self):
@@ -1664,7 +1685,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):

@pyqtSlot(str)
def slot_changeGovernorMode(self, newMode):
bus = dbus.SystemBus(mainloop=DBus.loop)
bus = dbus.SystemBus(mainloop=gDBus.loop)
#proxy = bus.get_object("org.cadence.CpufreqSelector", "/Selector", introspect=False)
#print(proxy.hello())
proxy = bus.get_object("com.ubuntu.IndicatorCpufreqSelector", "/Selector", introspect=False)
@@ -2156,9 +2177,9 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):

def timerEvent(self, event):
if event.timerId() == self.m_timer500:
if DBus.jack and self.m_last_dsp_load != None:
next_dsp_load = DBus.jack.GetLoad()
next_xruns = DBus.jack.GetXruns()
if gDBus.jack and self.m_last_dsp_load != None:
next_dsp_load = gDBus.jack.GetLoad()
next_xruns = gDBus.jack.GetXruns()
needUpdateTip = False

if self.m_last_dsp_load != next_dsp_load:
@@ -2175,13 +2196,13 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.updateSystrayTooltip()

elif event.timerId() == self.m_timer2000:
if DBus.jack and self.m_last_buffer_size != None:
next_buffer_size = DBus.jack.GetBufferSize()
if gDBus.jack and self.m_last_buffer_size != None:
next_buffer_size = gDBus.jack.GetBufferSize()

if self.m_last_buffer_size != next_buffer_size:
self.m_last_buffer_size = next_buffer_size
self.label_jack_bfsize.setText("%i samples" % self.m_last_buffer_size)
self.label_jack_latency.setText("%.1f ms" % DBus.jack.GetLatency())
self.label_jack_latency.setText("%.1f ms" % gDBus.jack.GetLatency())

else:
self.update()
@@ -2202,8 +2223,8 @@ if __name__ == '__main__':
app.setWindowIcon(QIcon(":/scalable/cadence.svg"))

if haveDBus:
DBus.loop = DBusQtMainLoop(set_as_default=True)
DBus.bus = dbus.SessionBus(mainloop=DBus.loop)
gDBus.loop = DBusQtMainLoop(set_as_default=True)
gDBus.bus = dbus.SessionBus(mainloop=gDBus.loop)

initSystemChecks()



+ 1
- 1
src/claudia_launcher.py View File

@@ -31,7 +31,7 @@ import ui_claudia_launcher
from shared import *

# ------------------------------------------------------------------------------------------------------------
# Safe Imports getoutput
# Safe import getoutput

if sys.version_info >= (3, 0):
from subprocess import getoutput


Loading…
Cancel
Save