From 4dd0295feff6483e39bb00c12cf4d5751e6d3d67 Mon Sep 17 00:00:00 2001 From: Sebastien Estienne Date: Sat, 1 Apr 2006 15:37:31 +0000 Subject: first try at implementing avahi-daemon reconnectin git-svn-id: file:///home/lennart/svn/public/service-discovery-applet/trunk@105 3be567f1-68ff-0310-b24a-ad7cc433fd2f --- src/service-discovery-applet.in | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/service-discovery-applet.in b/src/service-discovery-applet.in index 449a328..20e7d70 100755 --- a/src/service-discovery-applet.in +++ b/src/service-discovery-applet.in @@ -243,6 +243,8 @@ class ServiceDiscoveryApplet(gnomeapplet.Applet): self.server = dbus.Interface(self.system_bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) + self.system_bus.add_signal_receiver(self.avahi_dbus_connect_cb, "NameOwnerChanged", "org.freedesktop.DBus", arg0="org.freedesktop.Avahi") + try: self.use_host_names = self.server.IsNSSSupportAvailable() except: @@ -255,6 +257,14 @@ class ServiceDiscoveryApplet(gnomeapplet.Applet): # applet.connect("destroy",self.cleanup) # applet.show_all() + def avahi_dbus_connect_cb(self, a, connect, disconnect): + if connect != "": + print "We are disconnected from avahi-daemon" + self.stop_service_discovery(None, None, None) + else: + print "We are connected to avahi-daemon" + self.start_service_discovery(None, None, None) + def start_notifying_cb(self): print "start notifying" self.show_notifications = self.sdaGconf.get_option("show_notifications") @@ -361,7 +371,10 @@ class ServiceDiscoveryApplet(gnomeapplet.Applet): if not self.service_browsers.has_key(service): return sb = self.service_browsers[service] - sb.Free() + try: + sb.Free() + except dbus.dbus_bindings.DBusException: + pass del self.service_browsers[service] # delete the sub menu of service_type if self.zc_types.has_key(type): -- cgit