From 490d8ed6635665a73c339fe9e906cdfa2726b4b1 Mon Sep 17 00:00:00 2001 From: Torge Matthies Date: Mon, 3 Jun 2024 11:05:38 +0200 Subject: [PATCH] winegstreamer: Fix race between wg_parser_stream_en/disable and GST_EVENT_FLUSH_START/STOP. --- dlls/winegstreamer/wg_parser.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c index f9b76b12f8f..021aa66ae12 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c @@ -608,17 +608,14 @@ static gboolean sink_event_cb(GstPad *pad, GstObject *parent, GstEvent *event) case GST_EVENT_FLUSH_START: pthread_mutex_lock(&parser->mutex); - if (stream->enabled) - { - stream->flushing = true; - pthread_cond_signal(&stream->event_empty_cond); + stream->flushing = true; + pthread_cond_signal(&stream->event_empty_cond); - if (stream->buffer) - { - gst_buffer_unmap(stream->buffer, &stream->map_info); - gst_buffer_unref(stream->buffer); - stream->buffer = NULL; - } + if (stream->buffer) + { + gst_buffer_unmap(stream->buffer, &stream->map_info); + gst_buffer_unref(stream->buffer); + stream->buffer = NULL; } pthread_mutex_unlock(&parser->mutex); @@ -636,8 +633,7 @@ static gboolean sink_event_cb(GstPad *pad, GstObject *parent, GstEvent *event) pthread_mutex_lock(&parser->mutex); stream->eos = false; - if (stream->enabled) - stream->flushing = false; + stream->flushing = false; pthread_mutex_unlock(&parser->mutex); break;