mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-22 15:18:21 +00:00
gst/gstelement.c: Fixed #326576, been running this for quite some time with no regressions at all.
Original commit message from CVS: * gst/gstelement.c: (gst_element_continue_state), (gst_element_set_state_func), (gst_element_change_state): Fixed #326576, been running this for quite some time with no regressions at all.
This commit is contained in:
parent
17015041c5
commit
e2e2bda0d3
3 changed files with 17 additions and 4 deletions
|
@ -1,3 +1,10 @@
|
|||
2006-02-02 Wim Taymans <wim@fluendo.com>
|
||||
|
||||
* gst/gstelement.c: (gst_element_continue_state),
|
||||
(gst_element_set_state_func), (gst_element_change_state):
|
||||
Fixed #326576, been running this for quite some time with
|
||||
no regressions at all.
|
||||
|
||||
2006-02-02 Wim Taymans <wim@fluendo.com>
|
||||
|
||||
* common/gst.supp:
|
||||
|
|
2
common
2
common
|
@ -1 +1 @@
|
|||
Subproject commit b7d18dcce9b54e4861136e9b13bc7c2cd89d0ec7
|
||||
Subproject commit 79d67fe009b6120b82d51df860c78e8361f02aea
|
|
@ -1896,6 +1896,8 @@ gst_element_continue_state (GstElement * element, GstStateChangeReturn ret)
|
|||
transition = GST_STATE_TRANSITION (current, next);
|
||||
|
||||
GST_STATE_NEXT (element) = next;
|
||||
/* mark busy */
|
||||
GST_STATE_RETURN (element) = GST_STATE_CHANGE_ASYNC;
|
||||
GST_OBJECT_UNLOCK (element);
|
||||
|
||||
GST_CAT_INFO_OBJECT (GST_CAT_STATES, element,
|
||||
|
@ -2108,6 +2110,13 @@ gst_element_set_state_func (GstElement * element, GstState state)
|
|||
next = GST_STATE_GET_NEXT (current, state);
|
||||
/* now we store the next state */
|
||||
GST_STATE_NEXT (element) = next;
|
||||
/* mark busy, we need to check that there is actually a state change
|
||||
* to be done else we could accidentally override SUCCESS/NO_PREROLL and
|
||||
* the default element change_state function has no way to know what the
|
||||
* old value was... could consider this a FIXME...*/
|
||||
if (current != next)
|
||||
GST_STATE_RETURN (element) = GST_STATE_CHANGE_ASYNC;
|
||||
|
||||
transition = GST_STATE_TRANSITION (current, next);
|
||||
|
||||
GST_CAT_DEBUG_OBJECT (GST_CAT_STATES, element,
|
||||
|
@ -2209,11 +2218,8 @@ gst_element_change_state (GstElement * element, GstStateChange transition)
|
|||
return ret;
|
||||
|
||||
async:
|
||||
GST_OBJECT_LOCK (element);
|
||||
GST_STATE_RETURN (element) = ret;
|
||||
GST_CAT_LOG_OBJECT (GST_CAT_STATES, element, "exit async state change %d",
|
||||
ret);
|
||||
GST_OBJECT_UNLOCK (element);
|
||||
|
||||
return ret;
|
||||
|
||||
|
|
Loading…
Reference in a new issue