mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-09 17:05:52 +00:00
fix for last plugins release
Original commit message from CVS: fix for last plugins release
This commit is contained in:
parent
31b478533c
commit
0ce552665c
2 changed files with 29 additions and 16 deletions
|
@ -1,10 +1,16 @@
|
||||||
|
2004-07-10 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
|
* gst/gstelement.c: (gst_element_set_state):
|
||||||
|
compatibility fix for latest plugins release. Change loop back
|
||||||
|
to while {}
|
||||||
|
|
||||||
2004-07-09 Wim Taymans <wim@fluendo.com>
|
2004-07-09 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
* gst/gstbin.c: (gst_bin_remove), (gst_bin_dispose):
|
* gst/gstbin.c: (gst_bin_remove), (gst_bin_dispose):
|
||||||
* gst/gstthread.c: (gst_thread_dispose), (gst_thread_catch),
|
* gst/gstthread.c: (gst_thread_dispose), (gst_thread_catch),
|
||||||
(gst_thread_main_loop):
|
(gst_thread_main_loop):
|
||||||
Since remove is virtual in GstBin we must not assume the
|
Since remove is virtual in GstBin we must not assume the
|
||||||
elements GList to have anothing usefull.
|
elements GList to have anothing useful.
|
||||||
Add some more logging to GstThread and be a bit more paranoid
|
Add some more logging to GstThread and be a bit more paranoid
|
||||||
when resetting the scheduler.
|
when resetting the scheduler.
|
||||||
Set the state of the bin to NULL before removing the children.
|
Set the state of the bin to NULL before removing the children.
|
||||||
|
|
|
@ -2738,20 +2738,33 @@ gst_element_set_state (GstElement * element, GstElementState state)
|
||||||
/* start with the current state */
|
/* start with the current state */
|
||||||
curpending = GST_STATE (element);
|
curpending = GST_STATE (element);
|
||||||
|
|
||||||
if (!GST_IS_BIN (element) && state == curpending) {
|
if (state == curpending) {
|
||||||
GST_CAT_DEBUG_OBJECT (GST_CAT_STATES, element,
|
if (GST_IS_BIN (element)) {
|
||||||
"non-bin element is already in requested state %s, returning",
|
/* set current state on it again */
|
||||||
gst_element_state_get_name (state));
|
if (oclass->change_state)
|
||||||
return (GST_STATE_SUCCESS);
|
return_val = (oclass->change_state) (element);
|
||||||
|
return return_val;
|
||||||
|
} else {
|
||||||
|
GST_CAT_DEBUG_OBJECT (GST_CAT_STATES, element,
|
||||||
|
"non-bin element is already in requested state %s, returning",
|
||||||
|
gst_element_state_get_name (state));
|
||||||
|
return GST_STATE_SUCCESS;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_CAT_INFO_OBJECT (GST_CAT_STATES, element, "setting state from %s to %s",
|
GST_CAT_INFO_OBJECT (GST_CAT_STATES, element, "setting state from %s to %s",
|
||||||
gst_element_state_get_name (curpending),
|
gst_element_state_get_name (curpending),
|
||||||
gst_element_state_get_name (state));
|
gst_element_state_get_name (state));
|
||||||
|
|
||||||
/* loop until the final requested state is set;
|
/* loop until the final requested state is set */
|
||||||
* loop at least once, starting with the current state */
|
|
||||||
do {
|
while (GST_STATE (element) != state
|
||||||
|
&& GST_STATE (element) != GST_STATE_VOID_PENDING) {
|
||||||
|
/* move the curpending state in the correct direction */
|
||||||
|
if (curpending < state)
|
||||||
|
curpending <<= 1;
|
||||||
|
else
|
||||||
|
curpending >>= 1;
|
||||||
|
|
||||||
/* set the pending state variable */
|
/* set the pending state variable */
|
||||||
GST_STATE_PENDING (element) = curpending;
|
GST_STATE_PENDING (element) = curpending;
|
||||||
|
@ -2800,13 +2813,7 @@ gst_element_set_state (GstElement * element, GstElementState state)
|
||||||
/* somebody added a GST_STATE_ and forgot to do stuff here ! */
|
/* somebody added a GST_STATE_ and forgot to do stuff here ! */
|
||||||
g_assert_not_reached ();
|
g_assert_not_reached ();
|
||||||
}
|
}
|
||||||
/* move the curpending state in the correct direction */
|
}
|
||||||
if (curpending < state)
|
|
||||||
curpending <<= 1;
|
|
||||||
else
|
|
||||||
curpending >>= 1;
|
|
||||||
} while (GST_STATE (element) != state
|
|
||||||
&& GST_STATE (element) != GST_STATE_VOID_PENDING);
|
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue