gstelement: unref the clock when the element changes to null state
authorJosep Torra <n770galaxy@gmail.com>
Wed, 17 Jun 2009 14:17:27 +0000 (16:17 +0200)
committerJosep Torra <n770galaxy@gmail.com>
Wed, 17 Jun 2009 14:17:27 +0000 (16:17 +0200)
gst/gstelement.c

index 4fc095b..c27c686 100644 (file)
@@ -2578,6 +2578,14 @@ gst_element_change_state (GstElement * element, GstStateChange transition)
       /* we can commit the state now which will proceeed to
        * the next state */
       ret = gst_element_continue_state (element, ret);
+      /* In null state release the reference to the clock */
+      if (GST_STATE (element) == GST_STATE_NULL) {
+        GstClock **clock_p;
+        GST_OBJECT_LOCK (element);
+        clock_p = &element->clock;
+        gst_object_replace ((GstObject **) clock_p, NULL);
+        GST_OBJECT_UNLOCK (element);
+      }
       break;
     case GST_STATE_CHANGE_NO_PREROLL:
       GST_CAT_DEBUG_OBJECT (GST_CAT_STATES, element,