[PATCH 2/2] mf: Finalize sinks right after they have been stopped.
Rémi Bernon
rbernon at codeweavers.com
Tue Jun 22 09:01:09 CDT 2021
As session_set_source_object_state does not call session_finalize_sinks
if session is already stopped.
Guilty Gear Strive otherwise gets stuck on character selection screen
as it waits for the MESessionClosed event forever.
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
I'm not completely sure about the logic here. Maybe we should instead
make session_set_source_object_state with SESSION_STATE_STOPPED state
and SESSION_FLAG_FINALIZE_SINKS flag call session_finalize_sinks,
or instead make sure to force session state after session_set_stopped
call to SESSION_STATE_STOPPING_SOURCES here.
dlls/mf/session.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/dlls/mf/session.c b/dlls/mf/session.c
index 08f3f48f030..acbcf9f30e2 100644
--- a/dlls/mf/session.c
+++ b/dlls/mf/session.c
@@ -2587,7 +2587,11 @@ static void session_set_sink_stream_state(struct media_session *session, IMFStre
break;
}
- if (session->presentation.flags & SESSION_FLAG_END_OF_PRESENTATION || FAILED(hr))
+ if (FAILED(hr))
+ session_set_stopped(session, hr);
+ else if (session->presentation.flags & SESSION_FLAG_FINALIZE_SINKS)
+ session_finalize_sinks(session);
+ else if (session->presentation.flags & SESSION_FLAG_END_OF_PRESENTATION)
session_set_stopped(session, hr);
break;
--
2.31.0
More information about the wine-devel
mailing list