From: Andrew Eikum Subject: Re: [PATCH v2 1/5] winegstreamer: Stop creating the filter if gstreamer fails to render. Message-Id: <20180222171241.t7hhtek7xartulwk@foghorn.codeweavers.com> Date: Thu, 22 Feb 2018 11:12:42 -0600 In-Reply-To: <1519311977-13458-1-git-send-email-z.figura12@gmail.com> References: <1519311977-13458-1-git-send-email-z.figura12@gmail.com> Signed-off-by: Andrew Eikum On Thu, Feb 22, 2018 at 09:06:13AM -0600, Zebediah Figura wrote: > 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 > > >