Zebediah Figura : winegstreamer: Move filter initialization out of GST_Connect().

Alexandre Julliard julliard at winehq.org
Mon Feb 15 16:09:49 CST 2021


Module: wine
Branch: master
Commit: c5c40f22608fedfb523672f20a7cf4b9d16ca4bc
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c5c40f22608fedfb523672f20a7cf4b9d16ca4bc

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Sat Feb 13 11:33:03 2021 -0600

winegstreamer: Move filter initialization out of GST_Connect().

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winegstreamer/gstdemux.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c
index 40c5e7ae017..8b63aa57702 100644
--- a/dlls/winegstreamer/gstdemux.c
+++ b/dlls/winegstreamer/gstdemux.c
@@ -1134,25 +1134,18 @@ static LONGLONG query_duration(GstPad *pad)
     return 0;
 }
 
-static HRESULT GST_Connect(struct parser *This, IPin *pConnectPin)
+static HRESULT GST_Connect(struct wg_parser *parser, LONGLONG file_size)
 {
-    struct wg_parser *parser = This->wg_parser;
     unsigned int i;
-    LONGLONG avail;
     GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE(
         "quartz_src",
         GST_PAD_SRC,
         GST_PAD_ALWAYS,
         GST_STATIC_CAPS_ANY);
 
-    IAsyncReader_Length(This->reader, &This->file_size, &avail);
-    parser->file_size = This->file_size;
-
-    This->sink_connected = true;
+    parser->file_size = file_size;
     parser->sink_connected = true;
 
-    This->read_thread = CreateThread(NULL, 0, read_thread, This, 0, NULL);
-
     if (!parser->bus)
     {
         parser->bus = gst_bus_new();
@@ -1170,7 +1163,6 @@ static HRESULT GST_Connect(struct parser *This, IPin *pConnectPin)
     gst_pad_set_element_private(parser->my_src, parser);
 
     parser->start_offset = parser->next_offset = parser->stop_offset = 0;
-    This->next_pull_offset = 0;
 
     if (!parser->init_gst(parser))
         return E_FAIL;
@@ -1194,7 +1186,6 @@ static HRESULT GST_Connect(struct parser *This, IPin *pConnectPin)
     pthread_mutex_unlock(&parser->mutex);
 
     parser->next_offset = 0;
-    This->next_pull_offset = 0;
     return S_OK;
 }
 
@@ -1357,6 +1348,7 @@ static HRESULT parser_sink_connect(struct strmbase_sink *iface, IPin *peer, cons
 {
     struct parser *filter = impl_from_strmbase_sink(iface);
     HRESULT hr = S_OK;
+    LONGLONG unused;
     unsigned int i;
 
     mark_wine_thread();
@@ -1365,7 +1357,13 @@ static HRESULT parser_sink_connect(struct strmbase_sink *iface, IPin *peer, cons
     if (FAILED(hr = IPin_QueryInterface(peer, &IID_IAsyncReader, (void **)&filter->reader)))
         return hr;
 
-    if (FAILED(hr = GST_Connect(filter, peer)))
+    IAsyncReader_Length(filter->reader, &filter->file_size, &unused);
+
+    filter->sink_connected = true;
+    filter->read_thread = CreateThread(NULL, 0, read_thread, filter, 0, NULL);
+    filter->next_pull_offset = 0;
+
+    if (FAILED(hr = GST_Connect(filter->wg_parser, filter->file_size)))
         goto err;
 
     if (!filter->init_gst(filter))




More information about the wine-cvs mailing list