Diff between ab34d7b754ffd949cc6693059550df95378d5cf6 and 3767c5e9dbe9f789bfb07e856ac7414e8eb41a92

Changed Files

File Additions Deletions Status
gdbus/client.c +10 -9 modified

Full Patch

diff --git a/gdbus/client.c b/gdbus/client.c
index c03e3a4..0311f9a 100644
--- a/gdbus/client.c
+++ b/gdbus/client.c
@@ -201,7 +201,7 @@ static void prop_entry_free(gpointer data)
 }
 
 static void add_property(GDBusProxy *proxy, const char *name,
-						DBusMessageIter *iter)
+				DBusMessageIter *iter, gboolean send_changed)
 {
 	DBusMessageIter value;
 	struct prop_entry *prop;
@@ -220,7 +220,7 @@ static void add_property(GDBusProxy *proxy, const char *name,
 		if (proxy->prop_func)
 			proxy->prop_func(proxy, name, &value, proxy->prop_data);
 
-		if (client == NULL)
+		if (client == NULL || send_changed == FALSE)
 			return;
 
 		if (client->property_changed)
@@ -239,7 +239,8 @@ static void add_property(GDBusProxy *proxy, const char *name,
 		proxy->prop_func(proxy, name, &value, proxy->prop_data);
 }
 
-static void update_properties(GDBusProxy *proxy, DBusMessageIter *iter)
+static void update_properties(GDBusProxy *proxy, DBusMessageIter *iter,
+							gboolean send_changed)
 {
 	DBusMessageIter dict;
 
@@ -260,7 +261,7 @@ static void update_properties(GDBusProxy *proxy, DBusMessageIter *iter)
 		dbus_message_iter_get_basic(&entry, &name);
 		dbus_message_iter_next(&entry);
 
-		add_property(proxy, name, &entry);
+		add_property(proxy, name, &entry, send_changed);
 
 		dbus_message_iter_next(&dict);
 	}
@@ -283,7 +284,7 @@ static void get_all_properties_reply(DBusPendingCall *call, void *user_data)
 
 	dbus_message_iter_init(reply, &iter);
 
-	update_properties(proxy, &iter);
+	update_properties(proxy, &iter, FALSE);
 
 done:
 	if (g_list_find(client->proxy_list, proxy) == NULL) {
@@ -525,7 +526,7 @@ static void refresh_property_reply(DBusPendingCall *call, void *user_data)
 
 		dbus_message_iter_init(reply, &iter);
 
-		add_property(data->proxy, data->name, &iter);
+		add_property(data->proxy, data->name, &iter, TRUE);
 	} else
 		dbus_error_free(&error);
 
@@ -803,7 +804,7 @@ static void properties_changed(GDBusClient *client, const char *path,
 	if (proxy == NULL)
 		return;
 
-	update_properties(proxy, &iter);
+	update_properties(proxy, &iter, TRUE);
 
 	dbus_message_iter_next(&iter);
 
@@ -843,7 +844,7 @@ static void parse_properties(GDBusClient *client, const char *path,
 
 	proxy = proxy_lookup(client, path, interface);
 	if (proxy) {
-		update_properties(proxy, iter);
+		update_properties(proxy, iter, FALSE);
 		return;
 	}
 
@@ -851,7 +852,7 @@ static void parse_properties(GDBusClient *client, const char *path,
 	if (proxy == NULL)
 		return;
 
-	update_properties(proxy, iter);
+	update_properties(proxy, iter, FALSE);
 
 	if (client->proxy_added)
 		client->proxy_added(proxy, client->user_data);