winegstreamer: Do not block forever if EOS races with command queue.
Currently, the winegstreamer media source checks for EOS when RequestSample() is called, but doesn't handle the cases when EOS is detected between the RequestSample() call and the moment when the request is popped from the command queue and serviced. This can result in the media source waiting forever for a sample and get stuck. This commit fixes the bug by adding a check for EOS in wait_for_event(). This commit fixes Medieval Dynasty hanging on developer logos on the Steam Deck. Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com> Signed-off-by: Zebediah Figura <zfigura@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
64b2ce4bcb
commit
4853f65c84
|
@ -535,6 +535,12 @@ static void wait_on_sample(struct media_stream *stream, IUnknown *token)
|
|||
|
||||
TRACE("%p, %p\n", stream, token);
|
||||
|
||||
if (stream->eos)
|
||||
{
|
||||
IMFMediaEventQueue_QueueEventParamVar(stream->event_queue, MEError, &GUID_NULL, MF_E_END_OF_STREAM, &empty_var);
|
||||
return;
|
||||
}
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (!wg_parser_stream_get_event(stream->wg_stream, &event))
|
||||
|
|
Loading…
Reference in New Issue