diff options
Diffstat (limited to 'src/service-discovery-applet.in')
-rwxr-xr-x | src/service-discovery-applet.in | 15 |
1 files changed, 14 insertions, 1 deletions
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): |