commit 2c1917639f08dae3638437806eb74373fe9efbce
Author: Roman Fomin <rfomin@gmail.com>
AuthorDate: Tue Nov 28 01:14:50 2023 +0700
Commit: Roman Fomin <rfomin@gmail.com>
CommitDate: Tue Nov 28 01:14:50 2023 +0700
Always reset buffer position after filling header fields
---
src/i_winmusic.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i_winmusic.c b/src/i_winmusic.c
index 0f6d47fc..6871fe22 100644
--- a/src/i_winmusic.c
+++ b/src/i_winmusic.c
@@ -251,7 +251,6 @@ static void WriteBuffer(const byte *ptr, unsigned int size)
{
UnprepareHeader();
buffer.prepared = false;
- buffer.position = 0;
}
if (buffer.position + size >= buffer.size)
@@ -276,6 +275,9 @@ static void StreamOut(void)
hdr->dwBytesRecorded = buffer.position;
hdr->dwBufferLength = buffer.size;
+ // Reset buffer position even if midiStreamOut fails.
+ buffer.position = 0;
+
mmr = midiOutPrepareHeader((HMIDIOUT)hMidiStream, hdr, sizeof(MIDIHDR));
if (mmr != MMSYSERR_NOERROR)
{