[PATCH 4/4] winegstreamer: Move wg_parser_destroy() to the Unix library.

Zebediah Figura z.figura12 at gmail.com
Thu Feb 11 16:18:58 CST 2021


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/winegstreamer/gst_private.h |  1 +
 dlls/winegstreamer/gstdemux.c    | 18 +-----------------
 dlls/winegstreamer/wg_parser.c   | 17 +++++++++++++++++
 3 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/dlls/winegstreamer/gst_private.h b/dlls/winegstreamer/gst_private.h
index 7aaf25e395e..15a20749786 100644
--- a/dlls/winegstreamer/gst_private.h
+++ b/dlls/winegstreamer/gst_private.h
@@ -210,6 +210,7 @@ struct unix_funcs
     struct wg_parser *(CDECL *wg_avi_parser_create)(void);
     struct wg_parser *(CDECL *wg_mpeg_audio_parser_create)(void);
     struct wg_parser *(CDECL *wg_wave_parser_create)(void);
+    void (CDECL *wg_parser_destroy)(struct wg_parser *parser);
 };
 
 extern const struct unix_funcs *unix_funcs;
diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c
index b4f95df67da..db1825e34a1 100644
--- a/dlls/winegstreamer/gstdemux.c
+++ b/dlls/winegstreamer/gstdemux.c
@@ -1225,22 +1225,6 @@ static struct strmbase_pin *parser_get_pin(struct strmbase_filter *base, unsigne
     return NULL;
 }
 
-static void wg_parser_destroy(struct wg_parser *parser)
-{
-    if (parser->bus)
-    {
-        gst_bus_set_sync_handler(parser->bus, NULL, NULL, NULL);
-        gst_object_unref(parser->bus);
-    }
-
-    pthread_mutex_destroy(&parser->mutex);
-    pthread_cond_destroy(&parser->init_cond);
-    pthread_cond_destroy(&parser->read_cond);
-    pthread_cond_destroy(&parser->read_done_cond);
-
-    free(parser);
-}
-
 static void parser_destroy(struct strmbase_filter *iface)
 {
     struct parser *filter = impl_from_strmbase_filter(iface);
@@ -1259,7 +1243,7 @@ static void parser_destroy(struct strmbase_filter *iface)
         IAsyncReader_Release(filter->reader);
     filter->reader = NULL;
 
-    wg_parser_destroy(filter->wg_parser);
+    unix_funcs->wg_parser_destroy(filter->wg_parser);
 
     strmbase_sink_cleanup(&filter->sink);
     strmbase_filter_cleanup(&filter->filter);
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
index 3a67a195dff..071694f77cc 100644
--- a/dlls/winegstreamer/wg_parser.c
+++ b/dlls/winegstreamer/wg_parser.c
@@ -1011,12 +1011,29 @@ static struct wg_parser * CDECL wg_wave_parser_create(void)
     return parser;
 }
 
+static void CDECL wg_parser_destroy(struct wg_parser *parser)
+{
+    if (parser->bus)
+    {
+        gst_bus_set_sync_handler(parser->bus, NULL, NULL, NULL);
+        gst_object_unref(parser->bus);
+    }
+
+    pthread_mutex_destroy(&parser->mutex);
+    pthread_cond_destroy(&parser->init_cond);
+    pthread_cond_destroy(&parser->read_cond);
+    pthread_cond_destroy(&parser->read_done_cond);
+
+    free(parser);
+}
+
 static const struct unix_funcs funcs =
 {
     wg_decodebin_parser_create,
     wg_avi_parser_create,
     wg_mpeg_audio_parser_create,
     wg_wave_parser_create,
+    wg_parser_destroy,
 };
 
 NTSTATUS CDECL __wine_init_unix_lib(HMODULE module, DWORD reason, const void *ptr_in, void *ptr_out)
-- 
2.30.0




More information about the wine-devel mailing list