gdbus: Fix emitting PropertiesChanged twice
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Mon, 19 Aug 2013 13:54:35 +0000 (16:54 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 11 Sep 2013 02:06:59 +0000 (19:06 -0700)
This fixes double emission of PropertiesChanged introduced by flushing
changes, the flushing can happen during the pending processing so the
pending_prop flag needs to be updated in the beginning and the list of
properties can be freed before g_dbus_send_message as it is not required
anymore.

gdbus/object.c

index c4cf724..0822fe8 100644 (file)
@@ -1642,6 +1642,8 @@ static void process_properties_from_interface(struct generic_data *data,
        DBusMessageIter iter, dict, array;
        GSList *invalidated;
 
+       data->pending_prop = FALSE;
+
        if (iface->pending_prop == NULL)
                return;
 
@@ -1708,8 +1710,6 @@ static void process_property_changes(struct generic_data *data)
 
                process_properties_from_interface(data, iface);
        }
-
-       data->pending_prop = FALSE;
 }
 
 void g_dbus_emit_property_changed(DBusConnection *connection,