diff options
Diffstat (limited to 'omx/gstomxvideodec.c')
-rw-r--r-- | omx/gstomxvideodec.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c index 1e7d436..0dc4871 100644 --- a/omx/gstomxvideodec.c +++ b/omx/gstomxvideodec.c @@ -2094,15 +2094,7 @@ gst_omx_video_dec_flush (GstVideoDecoder * decoder) } #endif - /* 1) Wait until the srcpad loop is stopped, - * unlock GST_VIDEO_DECODER_STREAM_LOCK to prevent deadlocks - * caused by using this lock from inside the loop function */ - GST_VIDEO_DECODER_STREAM_UNLOCK (self); - gst_pad_stop_task (GST_VIDEO_DECODER_SRC_PAD (decoder)); - GST_DEBUG_OBJECT (self, "Flushing -- task stopped"); - GST_VIDEO_DECODER_STREAM_LOCK (self); - - /* 2) Flush the ports */ + /* 1) Flush the ports */ GST_DEBUG_OBJECT (self, "flushing ports"); gst_omx_port_set_flushing (self->dec_in_port, 5 * GST_SECOND, TRUE); gst_omx_port_set_flushing (self->dec_out_port, 5 * GST_SECOND, TRUE); @@ -2114,6 +2106,14 @@ gst_omx_video_dec_flush (GstVideoDecoder * decoder) } #endif + /* 2) Wait until the srcpad loop is stopped, + * unlock GST_VIDEO_DECODER_STREAM_LOCK to prevent deadlocks + * caused by using this lock from inside the loop function */ + GST_VIDEO_DECODER_STREAM_UNLOCK (self); + gst_pad_stop_task (GST_VIDEO_DECODER_SRC_PAD (decoder)); + GST_DEBUG_OBJECT (self, "Flushing -- task stopped"); + GST_VIDEO_DECODER_STREAM_LOCK (self); + /* 3) Resume components */ gst_omx_component_set_state (self->dec, OMX_StateExecuting); gst_omx_component_get_state (self->dec, GST_CLOCK_TIME_NONE); |