mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-07 12:21:17 +00:00
play: Improve pipeline states
First set the pipeline to the PAUSED state to check if we are dealing with a live pipeline or not. Then move to the desired state. If we don't do this, it is possible that we receive a BUFFERING message before we know that the pipeline is live and we would set the pipeline to PAUSED and deadlock.
This commit is contained in:
parent
c268eab145
commit
1c5c49a94c
1 changed files with 3 additions and 1 deletions
|
@ -396,7 +396,7 @@ play_uri (GstPlay * play, const gchar * next_uri)
|
|||
|
||||
g_object_set (play->playbin, "uri", next_uri, NULL);
|
||||
|
||||
sret = gst_element_set_state (play->playbin, play->desired_state);
|
||||
sret = gst_element_set_state (play->playbin, GST_STATE_PAUSED);
|
||||
switch (sret) {
|
||||
case GST_STATE_CHANGE_FAILURE:
|
||||
/* ignore, we should get an error message posted on the bus */
|
||||
|
@ -411,6 +411,8 @@ play_uri (GstPlay * play, const gchar * next_uri)
|
|||
default:
|
||||
break;
|
||||
}
|
||||
if (play->desired_state != GST_STATE_PAUSED)
|
||||
sret = gst_element_set_state (play->playbin, play->desired_state);
|
||||
}
|
||||
|
||||
/* returns FALSE if we have reached the end of the playlist */
|
||||
|
|
Loading…
Reference in a new issue