[PATCH 3/5] winegstreamer: Don't wait for the no-more-pads signal if playback fails.

Zebediah Figura z.figura12 at gmail.com
Tue Feb 20 20:13:00 CST 2018


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/winegstreamer/gstdemux.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c
index 0fee556..ebc9918 100644
--- a/dlls/winegstreamer/gstdemux.c
+++ b/dlls/winegstreamer/gstdemux.c
@@ -1081,7 +1081,6 @@ static GstBusSyncReply watch_bus(GstBus *bus, GstMessage *msg, gpointer data)
         gst_message_parse_error(msg, &err, &dbg_info);
         FIXME("%s: %s\n", GST_OBJECT_NAME(msg->src), err->message);
         WARN("%s\n", dbg_info);
-        SetEvent(This->event);
     } else if (GST_MESSAGE_TYPE(msg) & GST_MESSAGE_WARNING) {
         gst_message_parse_warning(msg, &err, &dbg_info);
         WARN("%s: %s\n", GST_OBJECT_NAME(msg->src), err->message);
@@ -1159,13 +1158,14 @@ static HRESULT GST_Connect(GSTInPin *pPin, IPin *pConnectPin, ALLOCATOR_PROPERTI
     This->initial = This->discont = TRUE;
     ResetEvent(This->event);
     gst_element_set_state(This->container, GST_STATE_PLAYING);
-    WaitForSingleObject(This->event, -1);
     ret = gst_element_get_state(This->container, NULL, NULL, -1);
 
     if (ret == GST_STATE_CHANGE_FAILURE) {
         ERR("GStreamer failed to play stream\n");
         return E_FAIL;
     } else {
+        WaitForSingleObject(This->event, INFINITE);
+
         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;
-- 
2.7.4




More information about the wine-devel mailing list