From c4cb27d844f99f5cc9fac3ac4c9109ce47ad9f0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mi=C4=85sko?= Date: Fri, 22 Feb 2019 00:00:00 +0000 Subject: [PATCH] gobject: Use atomic operations to read object reference count --- gobject/gobject.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gobject/gobject.c b/gobject/gobject.c index 5f23a4908..22c2cb39e 100644 --- a/gobject/gobject.c +++ b/gobject/gobject.c @@ -1100,7 +1100,7 @@ void g_object_run_dispose (GObject *object) { g_return_if_fail (G_IS_OBJECT (object)); - g_return_if_fail (object->ref_count > 0); + g_return_if_fail (g_atomic_int_get (&object->ref_count) > 0); g_object_ref (object); TRACE (GOBJECT_OBJECT_DISPOSE(object,G_TYPE_FROM_INSTANCE(object), 0)); @@ -2818,7 +2818,7 @@ g_object_weak_ref (GObject *object, g_return_if_fail (G_IS_OBJECT (object)); g_return_if_fail (notify != NULL); - g_return_if_fail (object->ref_count >= 1); + g_return_if_fail (g_atomic_int_get (&object->ref_count) >= 1); G_LOCK (weak_refs_mutex); wstack = g_datalist_id_remove_no_notify (&object->qdata, quark_weak_refs); @@ -3000,7 +3000,7 @@ gpointer GObject *object = _object; gboolean was_floating; g_return_val_if_fail (G_IS_OBJECT (object), object); - g_return_val_if_fail (object->ref_count >= 1, object); + g_return_val_if_fail (g_atomic_int_get (&object->ref_count) >= 1, object); g_object_ref (object); was_floating = floating_flag_handler (object, -1); if (was_floating) @@ -3023,7 +3023,7 @@ void g_object_force_floating (GObject *object) { g_return_if_fail (G_IS_OBJECT (object)); - g_return_if_fail (object->ref_count >= 1); + g_return_if_fail (g_atomic_int_get (&object->ref_count) >= 1); floating_flag_handler (object, +1); } @@ -3104,7 +3104,7 @@ g_object_add_toggle_ref (GObject *object, g_return_if_fail (G_IS_OBJECT (object)); g_return_if_fail (notify != NULL); - g_return_if_fail (object->ref_count >= 1); + g_return_if_fail (g_atomic_int_get (&object->ref_count) >= 1); g_object_ref (object); @@ -4138,7 +4138,7 @@ g_object_watch_closure (GObject *object, g_return_if_fail (closure != NULL); g_return_if_fail (closure->is_invalid == FALSE); g_return_if_fail (closure->in_marshal == FALSE); - g_return_if_fail (object->ref_count > 0); /* this doesn't work on finalizing objects */ + g_return_if_fail (g_atomic_int_get (&object->ref_count) > 0); /* this doesn't work on finalizing objects */ g_closure_add_invalidate_notifier (closure, object, object_remove_closure); g_closure_add_marshal_guards (closure, @@ -4184,7 +4184,7 @@ g_closure_new_object (guint sizeof_closure, GClosure *closure; g_return_val_if_fail (G_IS_OBJECT (object), NULL); - g_return_val_if_fail (object->ref_count > 0, NULL); /* this doesn't work on finalizing objects */ + g_return_val_if_fail (g_atomic_int_get (&object->ref_count) > 0, NULL); /* this doesn't work on finalizing objects */ closure = g_closure_new_simple (sizeof_closure, object); g_object_watch_closure (object, closure); @@ -4212,7 +4212,7 @@ g_cclosure_new_object (GCallback callback_func, GClosure *closure; g_return_val_if_fail (G_IS_OBJECT (object), NULL); - g_return_val_if_fail (object->ref_count > 0, NULL); /* this doesn't work on finalizing objects */ + g_return_val_if_fail (g_atomic_int_get (&object->ref_count) > 0, NULL); /* this doesn't work on finalizing objects */ g_return_val_if_fail (callback_func != NULL, NULL); closure = g_cclosure_new (callback_func, object, NULL); @@ -4241,7 +4241,7 @@ g_cclosure_new_object_swap (GCallback callback_func, GClosure *closure; g_return_val_if_fail (G_IS_OBJECT (object), NULL); - g_return_val_if_fail (object->ref_count > 0, NULL); /* this doesn't work on finalizing objects */ + g_return_val_if_fail (g_atomic_int_get (&object->ref_count) > 0, NULL); /* this doesn't work on finalizing objects */ g_return_val_if_fail (callback_func != NULL, NULL); closure = g_cclosure_new_swap (callback_func, object, NULL);