Commit 1 prevents the media session from starting execution of an asynchronous operation while another asynchronous operation is still running. Without this, it was possible for invalid state transitions to happen, which could leave the session in an intermediary state (not stopped, started, paused, closed or shut down) indefinitely.
Commits 2, 3 and 4 are some more fixes around pausing and unpausing in mfplat.
-- v2: mf/session: Fix pausing a media session when the media source sends buffering events. winegstreamer: Also flush token queue on seek. mf/sar: Allow starting audio renderer again after pausing it. mf/session: Prevent media session from running commands concurrently. mf: Fix media session staying in RESTARTING_SOURCES state after failing to start/seek a media source.