Ok, it looks like the filters are set to the position of the latest sample when `Stop()` is called. We probably don't need to do anything about that unless a bug arises out of it.
I don't think that's true per se. Again, according to our current understanding, and I would be surprised if this is wrong, the only time SetPositions() is ever called by the graph is when SetPositions() is called *on* the graph. There's not really a reason to seek at any other time. Filters may *choose* to report different times from GetPositions(), but that's not under the graph's control. As we've seen, they may or may not update the reported position more frequently. The graph never calls GetPositions() on filters as far as we know so it doesn't really matter much. It would be unlikely for anything to ask individual filters for their positions instead of the graph.
Positions in `test_graph_seeking()` are not updated at all in native or Wine if we sleep on a running graph for a second and then stop.
I'm looking at lines 5063-5084 in upstream Wine. We seek to 1234 ms, sleep for 100 ms, and then GetPositions() returns roughly 1334 ms. Again, this is about GetPositions() on the graph, not the filters.
I haven't moved the tests there because I don't know how to test this issue there. I updated the implementation though.
See the bit right after that, lines 5086-5104, where we pause the graph, wait 100 ms, then run it again, and test that the positions haven't moved in the meantime. In this case we'd want to duplicate that part, but stop instead of pause. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10885#note_140425