diff --git a/gdbus/client.c b/gdbus/client.c
index c03e3a4..0311f9a 100644
--- a/gdbus/client.c
+++ b/gdbus/client.c
}
static void add_property(GDBusProxy *proxy, const char *name,
- DBusMessageIter *iter)
+ DBusMessageIter *iter, gboolean send_changed)
{
DBusMessageIter value;
struct prop_entry *prop;
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)
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;
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);
}
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) {
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);
if (proxy == NULL)
return;
- update_properties(proxy, &iter);
+ update_properties(proxy, &iter, TRUE);
dbus_message_iter_next(&iter);
proxy = proxy_lookup(client, path, interface);
if (proxy) {
- update_properties(proxy, iter);
+ update_properties(proxy, iter, FALSE);
return;
}
if (proxy == NULL)
return;
- update_properties(proxy, iter);
+ update_properties(proxy, iter, FALSE);
if (client->proxy_added)
client->proxy_added(proxy, client->user_data);