foxygit / doom Log in
commit 48bb550452bef6f90112018bce4a618a7a8af87f
Author:     ceski <56656010+ceski-1@users.noreply.github.com>
AuthorDate: Mon May 15 10:08:21 2023 -0700
Commit:     ceski <56656010+ceski-1@users.noreply.github.com>
CommitDate: Mon May 15 10:08:21 2023 -0700

    Fix EMIDI global looping
---
 src/i_winmusic.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/i_winmusic.c b/src/i_winmusic.c
index cfb8927b..9271064e 100644
--- a/src/i_winmusic.c
+++ b/src/i_winmusic.c
@@ -940,7 +940,10 @@ static boolean AddToBuffer(unsigned int delta_time, midi_event_t *event,
                     {
                         song.tracks[i].emidi_loop_count = count;
                         MIDI_SetLoopPoint(song.tracks[i].iter);
+                        song.tracks[i].saved_end_of_track = song.tracks[i].end_of_track;
+                        song.tracks[i].saved_elapsed_time = song.tracks[i].elapsed_time;
                     }
+                    song.saved_elapsed_time = song.elapsed_time;
                     SendNOPMsg(delta_time);
                     break;

@@ -952,6 +955,9 @@ static boolean AddToBuffer(unsigned int delta_time, midi_event_t *event,
                             if (song.tracks[i].emidi_loop_count != 0)
                             {
                                 MIDI_RestartAtLoopPoint(song.tracks[i].iter);
+                                song.tracks[i].end_of_track = song.tracks[i].saved_end_of_track;
+                                song.tracks[i].elapsed_time = song.tracks[i].saved_elapsed_time;
+                                song.elapsed_time = song.saved_elapsed_time;
                             }

                             if (song.tracks[i].emidi_loop_count > 0)