Module: wine Branch: master Commit: 88c7e93575721c6b6884f912737de8184b74f780 URL: https://gitlab.winehq.org/wine/wine/-/commit/88c7e93575721c6b6884f912737de81...
Author: Anton Baskanov baskanov@gmail.com Date: Sat Nov 11 12:39:50 2023 +0700
dmsynth: Use time instead of position to order events.
Different time values can map to the same position.
---
dlls/dmsynth/synth.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/dlls/dmsynth/synth.c b/dlls/dmsynth/synth.c index 222481c8769..3eed05f35a0 100644 --- a/dlls/dmsynth/synth.c +++ b/dlls/dmsynth/synth.c @@ -322,6 +322,7 @@ struct preset struct event { struct list entry; + REFERENCE_TIME time; LONGLONG position; BYTE midi[3]; }; @@ -973,11 +974,12 @@ static HRESULT WINAPI synth_PlayBuffer(IDirectMusicSynth8 *iface, { if (!(event = calloc(1, sizeof(*event)))) return E_OUTOFMEMORY; memcpy(event->midi, data, head->cbEvent); + event->time = time + head->rtDelta; event->position = position;
EnterCriticalSection(&This->cs); LIST_FOR_EACH_ENTRY(next_event, &This->events, struct event, entry) - if (next_event->position > event->position) break; + if (next_event->time > event->time) break; list_add_before(&next_event->entry, &event->entry); LeaveCriticalSection(&This->cs); }