]> ToastFreeware Gitweb - gregoa/zavai.git/blobdiff - zavai/registry.py
Notes about remotising devices
[gregoa/zavai.git] / zavai / registry.py
index 3144a899db8cd951d5a91619152f1f8b3370076b..4fc210143ecb8568f3ad692328dbea2665db80d1 100644 (file)
@@ -169,9 +169,11 @@ class Service(Resource):
         self.callbacks = dict()
         for t in types:
             self.callbacks[t] = set()
+        self.started = False
 
     def shutdown(self):
-        self.stop()
+        if self.started:
+            self.stop()
 
     def start(self):
         "Activate the service"
@@ -197,10 +199,12 @@ class Service(Resource):
         self.callbacks[type].add(callback)
         if do_start:
             self.start()
+            self.started = True
 
     def disconnect(self, type, callback):
         "Disconnect a callback to this resource, activating it if needed"
         if not self.has_callbacks(): return
-        self.callbacks.discard(callback)
+        self.callbacks[type].discard(callback)
         if not self.has_callbacks():
             self.stop()
+            self.started = False