summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xsrc/service-discovery-applet.in15
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):