mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 23:16:14 +01:00
notify: Refactor g_object_notify_queue_thaw()
This adds better error reporting and simplifies the code for adding thread safety. https://bugzilla.gnome.org/show_bug.cgi?id=166020
This commit is contained in:
parent
0201a81f04
commit
83026092eb
@ -96,11 +96,19 @@ g_object_notify_queue_thaw (GObject *object,
|
||||
guint n_pspecs = 0;
|
||||
|
||||
g_return_if_fail (nqueue->freeze_count > 0);
|
||||
g_return_if_fail (g_atomic_int_get(&object->ref_count) > 0);
|
||||
|
||||
/* Just make sure we never get into some nasty race condition */
|
||||
if (G_UNLIKELY(nqueue->freeze_count == 0)) {
|
||||
g_warning ("%s: property-changed notification for %s(%p) is not frozen",
|
||||
G_STRFUNC, G_OBJECT_TYPE_NAME (object), object);
|
||||
return;
|
||||
}
|
||||
|
||||
nqueue->freeze_count--;
|
||||
if (nqueue->freeze_count)
|
||||
if (nqueue->freeze_count) {
|
||||
return;
|
||||
g_return_if_fail (object->ref_count > 0);
|
||||
}
|
||||
|
||||
pspecs = nqueue->n_pspecs > 16 ? free_me = g_new (GParamSpec*, nqueue->n_pspecs) : pspecs_mem;
|
||||
/* set first entry to NULL since it's checked unconditionally */
|
||||
|
Loading…
Reference in New Issue
Block a user