From: Sebastian Dröge Date: Mon, 7 Nov 2011 10:05:29 +0000 (+0100) Subject: omxvideoenc: Fix deadlock between srcpad stream lock and ::reset() X-Git-Tag: 1.0.0~297 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9a6cea5af3709427ca5059f81eaa791d80786884;p=platform%2Fupstream%2Fgst-omx.git omxvideoenc: Fix deadlock between srcpad stream lock and ::reset() --- diff --git a/omx/gstomxvideoenc.c b/omx/gstomxvideoenc.c index 61eaf93..c7dd5ef 100644 --- a/omx/gstomxvideoenc.c +++ b/omx/gstomxvideoenc.c @@ -758,6 +758,16 @@ gst_omx_video_enc_loop (GstOMXVideoEnc * self) GST_DEBUG_OBJECT (self, "Handling buffer: 0x%08x %lu", buf->omx_buf->nFlags, buf->omx_buf->nTimeStamp); + /* This prevents a deadlock between the srcpad stream + * lock and the videocodec stream lock, if ::reset() + * is called at the wrong time + */ + if (gst_omx_port_is_flushing (self->out_port)) { + GST_DEBUG_OBJECT (self, "Flushing"); + gst_omx_port_release_buffer (self->out_port, buf); + goto flushing; + } + frame = _find_nearest_frame (self, buf); if ((buf->omx_buf->nFlags & OMX_BUFFERFLAG_CODECCONFIG) && buf->omx_buf->nFilledLen > 0) {