From 429010b15c0345d38b8dd711ccc1f45b2bbdbab4 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 23 Nov 2013 16:44:31 -0500 Subject: [PATCH] Document details of GObject::notify The signals queued while notify is frozen are emitted in reverse order, while omitting duplicates. The lack of documentation for this was pointed out in https://bugzilla.gnome.org/show_bug.cgi?id=607016 --- gobject/gobject.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gobject/gobject.c b/gobject/gobject.c index 899fe01..7f3403e 100644 --- a/gobject/gobject.c +++ b/gobject/gobject.c @@ -1162,6 +1162,11 @@ g_object_notify_by_spec_internal (GObject *object, * When possible, eg. when signaling a property change from within the class * that registered the property, you should use g_object_notify_by_pspec() * instead. + * + * Note that emission of the notify signal may be blocked with + * g_object_freeze_notify(). In this case, the signal emissions are queued + * and will be emitted (in reverse order) when g_object_thaw_notify() is + * called. */ void g_object_notify (GObject *object, @@ -1265,7 +1270,8 @@ g_object_notify_by_pspec (GObject *object, * and when it reaches zero, queued "notify" signals are emitted. * * Duplicate notifications for each property are squashed so that at most one - * #GObject::notify signal is emitted for each property. + * #GObject::notify signal is emitted for each property, in the reverse order + * in which they have been queued. * * It is an error to call this function when the freeze count is zero. */ @@ -2193,6 +2199,10 @@ g_object_get_valist (GObject *object, * name/value pairs, followed by %NULL * * Sets properties on an object. + * + * Note that the "notify" signals are queued and only emitted (in + * reverse order) after all properties have been set. See + * g_object_freeze_notify(). */ void g_object_set (gpointer _object, -- 2.7.4