From: Zebediah Figura Subject: [PATCH v2 1/5] winegstreamer: Stop creating the filter if gstreamer fails to render. Message-Id: <1519311977-13458-1-git-send-email-z.figura12@gmail.com> Date: Thu, 22 Feb 2018 09:06:13 -0600 Otherwise the push_data() thread will run and try to use resources we never allocated. Signed-off-by: Zebediah Figura --- dlls/winegstreamer/gstdemux.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c index a19c64f..b48648c 100644 --- a/dlls/winegstreamer/gstdemux.c +++ b/dlls/winegstreamer/gstdemux.c @@ -1103,7 +1103,6 @@ static void unknown_type(GstElement *bin, GstPad *pad, GstCaps *caps, gpointer u static HRESULT GST_Connect(GSTInPin *pPin, IPin *pConnectPin, ALLOCATOR_PROPERTIES *props) { GSTImpl *This = (GSTImpl*)pPin->pin.pinInfo.pFilter; - HRESULT hr; int ret, i; LONGLONG avail, duration; GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE( @@ -1163,19 +1162,20 @@ static HRESULT GST_Connect(GSTInPin *pPin, IPin *pConnectPin, ALLOCATOR_PROPERTI WaitForSingleObject(This->event, -1); gst_element_get_state(This->container, NULL, NULL, -1); - if (!This->cStreams) { + if (!This->cStreams) + { FIXME("GStreamer could not find any streams\n"); - hr = E_FAIL; - } else { - gst_pad_query_duration(This->ppPins[0]->their_src, GST_FORMAT_TIME, &duration); - for (i = 0; i < This->cStreams; ++i) { - This->ppPins[i]->seek.llDuration = This->ppPins[i]->seek.llStop = duration / 100; - This->ppPins[i]->seek.llCurrent = 0; - if (!This->ppPins[i]->seek.llDuration) - This->ppPins[i]->seek.dwCapabilities = 0; - WaitForSingleObject(This->ppPins[i]->caps_event, -1); - } - hr = S_OK; + return E_FAIL; + } + + gst_pad_query_duration(This->ppPins[0]->their_src, GST_FORMAT_TIME, &duration); + for (i = 0; i < This->cStreams; ++i) + { + This->ppPins[i]->seek.llDuration = This->ppPins[i]->seek.llStop = duration / 100; + This->ppPins[i]->seek.llCurrent = 0; + if (!This->ppPins[i]->seek.llDuration) + This->ppPins[i]->seek.dwCapabilities = 0; + WaitForSingleObject(This->ppPins[i]->caps_event, INFINITE); } *props = This->props; @@ -1191,7 +1191,7 @@ static HRESULT GST_Connect(GSTInPin *pPin, IPin *pConnectPin, ALLOCATOR_PROPERTI gst_pad_set_active(This->my_src, 1); This->nextofs = This->nextpullofs = 0; - return hr; + return S_OK; } static inline GSTOutPin *impl_from_IMediaSeeking( IMediaSeeking *iface ) -- 2.7.4