From: Brendan McGrath <bmcgrath(a)codeweavers.com> This event indicates that there will be no more data. Handling it like an EOS fixes a dead lock that occurs when a stream completes. --- dlls/winegstreamer/wg_parser.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c index 710cfe6a0a5..fc14eaf3a98 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c @@ -598,6 +598,13 @@ static gboolean sink_event_cb(GstPad *pad, GstObject *parent, GstEvent *event) break; } + /* decodebin collects EOS and sends them only when all streams are EOS. + * In place it sends stream-group-done notifications for individual + * streams. This is mainly meant to accommodate chained OGGs. However, + * Windows is generally capable of reading from arbitrary streams while + * ignoring others, and should still send EOS in that case. + * Therefore translate stream-group-done back to EOS. */ + case GST_EVENT_STREAM_GROUP_DONE: case GST_EVENT_EOS: pthread_mutex_lock(&parser->mutex); stream->eos = true; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/7824