mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-27 07:56: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;
|
guint n_pspecs = 0;
|
||||||
|
|
||||||
g_return_if_fail (nqueue->freeze_count > 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--;
|
nqueue->freeze_count--;
|
||||||
if (nqueue->freeze_count)
|
if (nqueue->freeze_count) {
|
||||||
return;
|
return;
|
||||||
g_return_if_fail (object->ref_count > 0);
|
}
|
||||||
|
|
||||||
pspecs = nqueue->n_pspecs > 16 ? free_me = g_new (GParamSpec*, nqueue->n_pspecs) : pspecs_mem;
|
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 */
|
/* set first entry to NULL since it's checked unconditionally */
|
||||||
|
Loading…
Reference in New Issue
Block a user