Actually, did you test this with a custom source? What I see on Windows is that Start(new_position):
* stops the source;
* flushes;
* starts again with new position.
I noticed this extra stop when I tried mfplay API to see what SetPosition() is doing - depending on a the player state it's either Stop->Start->Pause or Stop->Start. Turns out this might be what session does internally.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3572#note_42791