gstelement: moved the clock unref to the right place

This commit is contained in:
Josep Torra 2009-06-17 16:45:17 +02:00
parent 5d0b8a7489
commit bf2c345667

View file

@ -2578,14 +2578,6 @@ gst_element_change_state (GstElement * element, GstStateChange transition)
/* we can commit the state now which will proceeed to /* we can commit the state now which will proceeed to
* the next state */ * the next state */
ret = gst_element_continue_state (element, ret); 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; break;
case GST_STATE_CHANGE_NO_PREROLL: case GST_STATE_CHANGE_NO_PREROLL:
GST_CAT_DEBUG_OBJECT (GST_CAT_STATES, element, GST_CAT_DEBUG_OBJECT (GST_CAT_STATES, element,
@ -2758,6 +2750,7 @@ gst_element_change_state_func (GstElement * element, GstStateChange transition)
{ {
GstState state, next; GstState state, next;
GstStateChangeReturn result = GST_STATE_CHANGE_SUCCESS; GstStateChangeReturn result = GST_STATE_CHANGE_SUCCESS;
GstClock **clock_p;
g_return_val_if_fail (GST_IS_ELEMENT (element), GST_STATE_CHANGE_FAILURE); 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 { } else {
gst_element_set_base_time (element, 0); 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; break;
default: default:
/* this will catch real but unhandled state changes; /* this will catch real but unhandled state changes;