notify: Remove g_object_notify_queue_from_object()
authorOlivier CrĂȘte <olivier.crete@collabora.co.uk>
Thu, 22 Jul 2010 19:20:35 +0000 (21:20 +0200)
committerBenjamin Otte <otte@redhat.com>
Thu, 22 Jul 2010 19:56:20 +0000 (21:56 +0200)
The function will not be safe with object locking in place, so we remove
it. The workaround is somewhat ugly, but it works.

https://bugzilla.gnome.org/show_bug.cgi?id=166020

gobject/gobject.c
gobject/gobjectnotifyqueue.c

index 77d12b7..f9280c2 100644 (file)
@@ -978,12 +978,14 @@ g_object_thaw_notify (GObject *object)
     return;
   
   g_object_ref (object);
-  nqueue = g_object_notify_queue_from_object (object, &property_notify_context);
-  if (!nqueue || !nqueue->freeze_count)
-    g_warning ("%s: property-changed notification for %s(%p) is not frozen",
-              G_STRFUNC, G_OBJECT_TYPE_NAME (object), object);
-  else
-    g_object_notify_queue_thaw (object, nqueue);
+
+  /* FIXME: Freezing is the only way to get at the notify queue.
+   * So we freeze once and then thaw twice.
+   */
+  nqueue = g_object_notify_queue_freeze (object,  &property_notify_context);
+  g_object_notify_queue_thaw (object, nqueue);
+  g_object_notify_queue_thaw (object, nqueue);
+
   g_object_unref (object);
 }
 
index 8492b47..a343bb4 100644 (file)
@@ -155,13 +155,6 @@ g_object_notify_queue_add (GObject            *object,
     }
 }
 
-static inline GObjectNotifyQueue*
-g_object_notify_queue_from_object (GObject              *object,
-                                  GObjectNotifyContext *context)
-{
-  return g_datalist_id_get_data (&object->qdata, context->quark_notify_queue);
-}
-
 
 G_END_DECLS