Corrected dbus watches
authorIngo Huerner <ingo.huerner@xse.de>
Tue, 22 Oct 2013 13:45:26 +0000 (15:45 +0200)
committerIngo Huerner <ingo.huerner@xse.de>
Tue, 22 Oct 2013 13:45:26 +0000 (15:45 +0200)
src/persistence_client_library_dbus_service.c
test/persistence_admin_service_mockup.c
test/persistence_lifeCycle_mockup.c

index 248096a..5768254 100644 (file)
@@ -346,7 +346,14 @@ static dbus_bool_t addWatch(DBusWatch *watch, void *data)
 
 static void removeWatch(DBusWatch *watch, void *data)
 {
+   void* w_data = dbus_watch_get_data(watch);
+
    DLT_LOG(gDLTContext, DLT_LOG_INFO, DLT_STRING("removeWatch called "), DLT_INT( (int)watch) );
+
+   if(w_data)
+      free(w_data);
+
+   dbus_watch_set_data(watch, NULL, NULL);
 }
 
 
@@ -354,6 +361,11 @@ static void removeWatch(DBusWatch *watch, void *data)
 static void watchToggled(DBusWatch *watch, void *data)
 {
    DLT_LOG(gDLTContext, DLT_LOG_INFO, DLT_STRING("watchToggled called "), DLT_INT( (int)watch) );
+
+   if(dbus_watch_get_enabled(watch))
+      addWatch(watch, data);
+   else
+      removeWatch(watch, data);
 }
 
 
index 607cbf6..d714e55 100644 (file)
@@ -261,16 +261,26 @@ static dbus_bool_t addWatch(DBusWatch *watch, void *data)
 
 static void removeWatch(DBusWatch *watch, void *data)
 {
+   void* w_data = dbus_watch_get_data(watch);
+
    printf("removeWatch called @0x%08x\n", (int)watch);
-}
 
+   if(w_data)
+      free(w_data);
+
+   dbus_watch_set_data(watch, NULL, NULL);
+}
 
 
 static void watchToggled(DBusWatch *watch, void *data)
 {
    printf("watchToggled called @0x%08x\n", (int)watch);
-}
 
+   if(dbus_watch_get_enabled(watch))
+      addWatch(watch, data);
+   else
+      removeWatch(watch, data);
+}
 
 
 int mainLoop(DBusObjectPathVTable vtable, DBusObjectPathVTable vtableFallback, void* userData)
index de55ead..630d86a 100644 (file)
@@ -297,14 +297,25 @@ static dbus_bool_t addWatch(DBusWatch *watch, void *data)
 
 static void removeWatch(DBusWatch *watch, void *data)
 {
+   void* w_data = dbus_watch_get_data(watch);
+
    printf("removeWatch called @0x%08x\n", (int)watch);
-}
 
+   if(w_data)
+      free(w_data);
+
+   dbus_watch_set_data(watch, NULL, NULL);
+}
 
 
 static void watchToggled(DBusWatch *watch, void *data)
 {
    printf("watchToggled called @0x%08x\n", (int)watch);
+
+   if(dbus_watch_get_enabled(watch))
+      addWatch(watch, data);
+   else
+      removeWatch(watch, data);
 }