mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-31 11:32:38 +00:00
gst-launch: go back down to GST_STATE_NULL in one step.
Going through each state on the way back down to GST_STATE_NULL can cause deadlocks, for example: gst-launch-1.0 audiotestsrc ! valve drop=true ! autoaudiosink ctrl + C Hangs forever when going to PAUSED, because the "final" state is ASYNC, and the sink blocks waiting for a preroll buffer. Going straight to NULL addresses this issue, and also helps making teardown faster when piping sparse streams to a sync sink.
This commit is contained in:
parent
e906197c62
commit
c682579c5e
1 changed files with 0 additions and 13 deletions
|
@ -1160,7 +1160,6 @@ main (int argc, char *argv[])
|
|||
loop = g_main_loop_new (NULL, FALSE);
|
||||
|
||||
if (!savefile) {
|
||||
GstState state, pending;
|
||||
GstStateChangeReturn ret;
|
||||
GstBus *bus;
|
||||
|
||||
|
@ -1263,22 +1262,10 @@ main (int argc, char *argv[])
|
|||
}
|
||||
}
|
||||
|
||||
PRINT (_("Setting pipeline to PAUSED ...\n"));
|
||||
gst_element_set_state (pipeline, GST_STATE_PAUSED);
|
||||
if (last_launch_code == LEC_NO_ERROR)
|
||||
gst_element_get_state (pipeline, &state, &pending, GST_CLOCK_TIME_NONE);
|
||||
|
||||
/* iterate mainloop to process pending stuff */
|
||||
while (g_main_context_iteration (NULL, FALSE));
|
||||
|
||||
/* No need to see all those pad caps going to NULL etc., it's just noise */
|
||||
if (deep_notify_id != 0)
|
||||
g_signal_handler_disconnect (pipeline, deep_notify_id);
|
||||
|
||||
PRINT (_("Setting pipeline to READY ...\n"));
|
||||
gst_element_set_state (pipeline, GST_STATE_READY);
|
||||
gst_element_get_state (pipeline, &state, &pending, GST_CLOCK_TIME_NONE);
|
||||
|
||||
#if 0
|
||||
if (check_index) {
|
||||
print_index_stats (index_stats);
|
||||
|
|
Loading…
Reference in a new issue