element: don't take object lock for g_critical() and flesh out warning message some...
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 1 Sep 2009 09:03:35 +0000 (10:03 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 1 Sep 2009 09:05:21 +0000 (10:05 +0100)
gst/gstelement.c

index f32717c..efb52b2 100644 (file)
@@ -2882,12 +2882,16 @@ gst_element_dispose (GObject * object)
   /* ERRORS */
 not_null:
   {
-    gboolean is_locked = gst_element_is_locked_state (element);
+    gboolean is_locked;
+
+    is_locked = GST_OBJECT_FLAG_IS_SET (element, GST_ELEMENT_LOCKED_STATE);
     g_critical
         ("\nTrying to dispose element %s, but it is in %s%s instead of the NULL"
         " state.\n"
         "You need to explicitly set elements to the NULL state before\n"
-        "dropping the final reference, to allow them to clean up.\n",
+        "dropping the final reference, to allow them to clean up.\n"
+        "This problem may also be caused by a refcounting bug in the\n"
+        "application or some element.\n",
         GST_OBJECT_NAME (element),
         gst_element_state_get_name (GST_STATE (element)),
         is_locked ? " (locked)" : "");