This should fix some spurious test failure in `test_media_session_Close`, as sometimes the source shutdown happens quickly enough and changes the session state to SESSION_STATE_STOPPED, causing the later Close command to succeed when it consistently returns E_SHUTDOWN on Windows.
--
v4: mf/session: Simplify the media session shutdown event handling.
mf/session: Introduce a SESSION_FLAG_SOURCE_SHUTDOWN presentation flag.
mf/session: Replace SESSION_FLAG_END_OF_PRESENTATION with dedicated states.
mf/session: Replace SESSION_FLAG_FINALIZE_SINKS with dedicated states.
mf/session: Remove unnecessary SESSION_FLAG_PENDING_COMMAND flag.
mf/session: Move internal states to a separate command_state enum.
mf/session: Clarify internal states from session states separation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8402
ddraw surfaces also hold references to their ddraw objects, but that's not
cleared in ddraw_destroy.
* * *
not sure if other uses of surface->ddraw need to be guarded too, let me know if i need to change them too.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8419
This should fix some spurious test failure in `test_media_session_Close`, as sometimes the source shutdown happens quickly enough and changes the session state to SESSION_STATE_STOPPED, causing the later Close command to succeed when it consistently returns E_SHUTDOWN on Windows.
--
v3: mf/session: Simplify the media session shutdown event handling.
mf/session: Introduce a SESSION_FLAG_SOURCE_SHUTDOWN presentation flag.
mf/session: Replace SESSION_FLAG_END_OF_PRESENTATION with dedicated states.
mf/session: Replace SESSION_FLAG_FINALIZE_SINKS with dedicated states.
mf/session: Remove unnecessary SESSION_FLAG_PENDING_COMMAND flag.
mf/session: Move internal states to a separate command_state enum.
mf/session: Clarify internal states from session states separation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8402
This is required to fix video playback in Crashlands 2 on Proton 10.
--
v4: mfreadwrite: Fix media type output when video processor is used.
mfreadwrite/tests: Check DEFAULT_STRIDE is not always present.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8172
MF Media Engine on Windows will only send one seek request at a time. It will queue the `seekTime` value of the most recent `SetCurrentTime` call and forward only that request to the Media Session after it completes its current seek (i.e. when it sends out the `MF_MEDIA_ENGINE_EVENT_SEEKED` notify event).
Wine currently forwards every `SetCurrentTime` call to the Media Session, which can result in a large queue of seeks, one performed after the other, resulting in a delay before completing the final seek request.
This fixes slow seek times in some worlds in VRChat.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8409