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.