From 63cf3cb3d47563e3fdcd2a70bd49649d126645f4 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Wed, 8 Jul 2015 07:09:13 +0200 Subject: pulse-dbus-receive: Reconnect if the bus disconnects --- bin/pulse-dbus-receive.py | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/bin/pulse-dbus-receive.py b/bin/pulse-dbus-receive.py index 347fa66..3e00d6a 100755 --- a/bin/pulse-dbus-receive.py +++ b/bin/pulse-dbus-receive.py @@ -7,6 +7,8 @@ import gobject import subprocess from dbus.mainloop.glib import DBusGMainLoop import sys +from functools import partial +import time home = os.path.expanduser('~') safe = { @@ -75,15 +77,32 @@ def init(bus): update_muted(sink.Get('org.PulseAudio.Core1.Device', 'Mute'), True) update_volume(sink.Get('org.PulseAudio.Core1.Device', 'Volume'), True) -if __name__ == '__main__': - DBusGMainLoop(set_as_default=True) - bus = dbus_connect() +def setup(loop, conn=None): + bus = None + while True: + try: + if conn is not None: + time.sleep(2) + bus = dbus_connect() + break + except: + if conn is None: + break + + if bus is None: + print "Could not connect to dbus!" + sys.exit(1) + + bus.call_on_disconnection(partial(setup, loop)) init(bus) bus.add_signal_receiver(signal_cb, message_keyword='msg') core = bus.get_object(object_path="/org/pulseaudio/core1") core.ListenForSignal('org.PulseAudio.Core1.Device.VolumeUpdated', dbus.Array(signature='o')) core.ListenForSignal('org.PulseAudio.Core1.Device.MuteUpdated', dbus.Array(signature='o')) + loop.run() +if __name__ == '__main__': + DBusGMainLoop(set_as_default=True) loop = gobject.MainLoop() - loop.run() + setup(loop) -- cgit v1.2.3