summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosep Torra <n770galaxy@gmail.com>2009-06-17 16:45:17 +0200
committerJosep Torra <n770galaxy@gmail.com>2009-06-17 16:45:17 +0200
commitbf2c34566748edff0acd4c0e15a1b656c8c7302e (patch)
tree292472cef35aff4727c1163556c58a0a3b0d82eb
parent5d0b8a7489224ec51bef707bab3c9a10f55fe655 (diff)
gstelement: moved the clock unref to the right place
-rw-r--r--gst/gstelement.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/gst/gstelement.c b/gst/gstelement.c
index c27c68647e..2b0e80b797 100644
--- a/gst/gstelement.c
+++ b/gst/gstelement.c
@@ -2578,14 +2578,6 @@ 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,
@@ -2758,6 +2750,7 @@ gst_element_change_state_func (GstElement * element, GstStateChange transition)
{
GstState state, next;
GstStateChangeReturn result = GST_STATE_CHANGE_SUCCESS;
+ GstClock **clock_p;
g_return_val_if_fail (GST_IS_ELEMENT (element), GST_STATE_CHANGE_FAILURE);
@@ -2794,6 +2787,12 @@ gst_element_change_state_func (GstElement * element, GstStateChange transition)
} else {
gst_element_set_base_time (element, 0);
}
+
+ /* In null state release the reference to the clock */
+ GST_OBJECT_LOCK (element);
+ clock_p = &element->clock;
+ gst_object_replace ((GstObject **) clock_p, NULL);
+ GST_OBJECT_UNLOCK (element);
break;
default:
/* this will catch real but unhandled state changes;