Nikolay Sivov (@nsivov) commented about dlls/mfmediaengine/main.c:
- media_engine_set_flag(engine, FLAGS_ENGINE_IS_ENDED, TRUE); - engine->video_frame.pts = MINLONGLONG; + if (engine->flags & FLAGS_ENGINE_LOOP) + { + media_engine_set_current_time(engine, 0.0); + } + else + { + engine->video_frame.pts = MINLONGLONG; + media_engine_set_flag(engine, FLAGS_ENGINE_FIRST_FRAME, FALSE); + media_engine_set_flag(engine, FLAGS_ENGINE_IS_ENDED, TRUE); + LeaveCriticalSection(&engine->cs); + IMFMediaEngineNotify_EventNotify(engine->callback, MF_MEDIA_ENGINE_EVENT_ENDED, 0, 0); + } LeaveCriticalSection(&engine->cs); - There are now two leave's for one enter.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/10306#note_132040