From 243f25da04cb9f54bd914b66fd2727bdf0ea4076 Mon Sep 17 00:00:00 2001 From: davemds Date: Tue, 2 Sep 2014 20:24:58 +0200 Subject: [PATCH] Try to start PulseAudio if the connection failed (max 3 times). The logic here is quite complex. Leaved some print on purpose to see how it works --- GADGETS/audio/__init__.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/GADGETS/audio/__init__.py b/GADGETS/audio/__init__.py index 99b9ad6..88b5fd7 100644 --- a/GADGETS/audio/__init__.py +++ b/GADGETS/audio/__init__.py @@ -379,6 +379,7 @@ class PulseAudio_Client(object): self.conn = None self.srv_addr = None self.channels = [] + self.exe_count = 0 self.try_to_connect() @@ -402,20 +403,26 @@ class PulseAudio_Client(object): return None def try_to_connect(self): - if self.connect() is False: + print("PULSE: try_to_connect") + if self.conn is None and self.connect() is False: ecore.Timer(5.0, self.try_to_connect) return ecore.ECORE_CALLBACK_CANCEL def connect(self): + print("PULSE: connect %d", self.exe_count) self.srv_addr = self.address_lookup() - if self.srv_addr is None: - # TODO maybe try to start pulse here - return False try: self.conn = dbus.connection.Connection(self.srv_addr, mainloop=DBusEcoreMainLoop()) except: + if self.exe_count < 3: + print("PULSE: Exe") + self.exe_count += 1 + x = ecore.Exe('pulseaudio --start') + x.on_del_event_add(lambda *a: self.connect()) return False + + self.exe_count = 0 self.conn.call_on_disconnection(self.disconnect_cb) # get all available channels @@ -447,7 +454,7 @@ class PulseAudio_Client(object): self.conn = None self.srv_addr = None self.channels = [] - ecore.Timer(1.0, self.try_to_connect) + ecore.Timer(3.0, self.try_to_connect) def channel_signal_cb(self, *args, signal): obj_path = args[0]