The last change adds a todo_wine for the time offset check, because we don't implement it. It wasn't necessary before becase InitPlay wasn't called yet.
It also adds a todo_wine for the playing state, because we don't implement start_time yet, and the segment start should be delayed instead of starting right away. Same, it wasn't necessary before because we were not calling Play.
We use notification messages to carry segment state and extend its lifetime for the entire play time, even though notifications might not be actually enabled. When notifications aren't enabled, we don't stamp the messages, so they are directly delivered to the performance output tool, and we then won't queue them to the notification message list. I don't think it matters very much, though we could alternatively use some internal message types instead.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4036
- Make it present some frames
- Make it check that the frames are from the new device, instead of checking TerminateDevice count; fixes https://bugs.winehq.org/show_bug.cgi?id=55649
- Make it check for and avoid some absurd crash on Windows
I tried everything I could think of, but Windows absolutely refuses to present a frame after changing the D3D device, instead choosing to return various absurd errors (segfaults, deadlocks, out of memory, etc). I suspect the VMR9 is haunted.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3970