service: Default service notifier is called too many times
authorJukka Rissanen <jukka.rissanen@linux.intel.com>
Tue, 17 Apr 2012 09:32:22 +0000 (12:32 +0300)
committerPatrik Flykt <patrik.flykt@linux.intel.com>
Tue, 17 Apr 2012 10:38:02 +0000 (13:38 +0300)
The default service notifier is invoked even when the default
service has not been changed. This causes unnecessary dbus
signal traffic.

Fixes BMC#25030

src/service.c

index b76b0a9..35e88d0 100644 (file)
@@ -42,8 +42,8 @@ static DBusConnection *connection = NULL;
 static GSequence *service_list = NULL;
 static GHashTable *service_hash = NULL;
 static GSList *counter_list = NULL;
-
 static unsigned int autoconnect_timeout = 0;
+static struct connman_service *current_default = NULL;
 
 struct connman_stats {
        connman_bool_t valid;
@@ -1256,6 +1256,11 @@ static void default_changed(void)
 {
        struct connman_service *service = __connman_service_get_default();
 
+       if (service == current_default)
+               return;
+
+       current_default = service;
+
        __connman_notifier_default_changed(service);
 }