summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatěj Laitl <matej@laitl.cz>2012-03-19 22:44:30 +0100
committerTanu Kaskinen <tanuk@iki.fi>2012-12-19 12:31:49 +0200
commitf36148a82e99b40a0adebfdf10c83e480b484847 (patch)
treef51e2df85ec8d53155b3a00d102d6726043d6b5c
parent7b8681de07bbeedda8a331ef7a120ea336bef5d7 (diff)
qpaeq: Try to load equalizer module before failing, better error messages
This fixes bug 38728 [1]. When equalizer features are unavailable in running pulseaudio daemon, try to load relevant module. If this fails, following error is printed on stderr instead of a confusing traceback: It seems that running pulseaudio does not support equalizer features and loading module-equalizer-sink module failed. Exiting... [1] https://bugs.freedesktop.org/show_bug.cgi?id=38728 Signed-off-by: Matěj Laitl <matej@laitl.cz>
-rwxr-xr-xsrc/utils/qpaeq22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/utils/qpaeq b/src/utils/qpaeq
index 5a7901ed5..4b00e3a68 100755
--- a/src/utils/qpaeq
+++ b/src/utils/qpaeq
@@ -49,7 +49,7 @@ def connect():
except Exception as e:
sys.stderr.write('There was an error connecting to pulseaudio, '
'please make sure you have the pulseaudio dbus '
- 'and equalizer modules loaded, exiting...\n')
+ 'module loaded, exiting...\n')
sys.exit(-1)
@@ -67,6 +67,8 @@ class QPaeq(QtGui.QWidget):
manager_iface='org.PulseAudio.Ext.Equalizing1.Manager'
core_iface='org.PulseAudio.Core1'
core_path='/org/pulseaudio/core1'
+ module_name='module-equalizer-sink'
+
def __init__(self):
QtGui.QWidget.__init__(self)
self.setWindowTitle('qpaeq')
@@ -226,9 +228,25 @@ class QPaeq(QtGui.QWidget):
#)
def set_connection(self):
self.connection=connect()
+
self.manager_obj=self.connection.get_object(object_path=self.manager_path)
manager_props=dbus.Interface(self.manager_obj,dbus_interface=prop_iface)
- self.sinks=manager_props.Get(self.manager_iface,'EqualizedSinks')
+ try:
+ self.sinks=manager_props.Get(self.manager_iface,'EqualizedSinks')
+ except dbus.exceptions.DBusException:
+ # probably module not yet loaded, try to load it:
+ try:
+ core=self.connection.get_object(object_path=self.core_path)
+ core.LoadModule(self.module_name,{},dbus_interface=self.core_iface)
+ # yup, we don't need to re-create manager_obj and manager_props,
+ # these are late-bound
+ self.sinks=manager_props.Get(self.manager_iface,'EqualizedSinks')
+ except dbus.exceptions.DBusException:
+ sys.stderr.write('It seems that running pulseaudio does not support '
+ 'equalizer features and loading %s module failed.\n'
+ 'Exiting...\n' % self.module_name)
+ sys.exit(-1)
+
def set_callbacks(self):
manager=dbus.Interface(self.manager_obj,dbus_interface=self.manager_iface)
manager.connect_to_signal('ProfilesChanged',self.update_profiles)