diff options
author | Matěj Laitl <matej@laitl.cz> | 2012-03-19 22:44:30 +0100 |
---|---|---|
committer | Tanu Kaskinen <tanuk@iki.fi> | 2012-12-19 12:31:49 +0200 |
commit | f36148a82e99b40a0adebfdf10c83e480b484847 (patch) | |
tree | f51e2df85ec8d53155b3a00d102d6726043d6b5c | |
parent | 7b8681de07bbeedda8a331ef7a120ea336bef5d7 (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-x | src/utils/qpaeq | 22 |
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) |