Stream sink such as evr can't be prerolled a second time, and when we are restarting from a paused state, those stream sink will already be prerolled so don't preroll them again. Otherwise we will be waiting for Prerolled events that will never come.
Split from !4545, splitting the fix from the tests because turns out the tests are contentious.
From: Yuxuan Shui yshui@codeweavers.com
Stream sink such as evr can't be prerolled a second time, and when we are restarting from a paused state, those stream sink will already be prerolled so don't preroll them again. Otherwise we will be waiting for Prerolled events that will never come. --- dlls/mf/session.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/mf/session.c b/dlls/mf/session.c index db742350161..3a7133b28ba 100644 --- a/dlls/mf/session.c +++ b/dlls/mf/session.c @@ -2927,7 +2927,7 @@ static void session_set_source_object_state(struct media_session *session, IUnkn
session_set_presentation_clock(session);
- if (session->presentation.flags & SESSION_FLAG_NEEDS_PREROLL) + if ((session->presentation.flags & SESSION_FLAG_NEEDS_PREROLL) && session_is_output_nodes_state(session, OBJ_STATE_STOPPED)) { MFTIME preroll_time = 0;