SDL_mixer: Changed frames/ms types from Uint64 to Sint64

From 685a43d6f165ac9bae9e5f409bb720bcec39e105 Mon Sep 17 00:00:00 2001
From: Petar Popovic <[EMAIL REDACTED]>
Date: Mon, 28 Jul 2025 11:14:20 +0200
Subject: [PATCH] Changed frames/ms types from Uint64 to Sint64

---
 include/SDL3_mixer/SDL_mixer.h | 14 +++++++-------
 src/SDL_mixer.c                | 26 +++++++++++++-------------
 2 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/include/SDL3_mixer/SDL_mixer.h b/include/SDL3_mixer/SDL_mixer.h
index 4f97764d..42bef634 100644
--- a/include/SDL3_mixer/SDL_mixer.h
+++ b/include/SDL3_mixer/SDL_mixer.h
@@ -1229,7 +1229,7 @@ extern SDL_DECLSPEC void SDLCALL MIX_UntagTrack(MIX_Track *track, const char *ta
  *
  * \sa MIX_GetTrackPlaybackPosition
  */
-extern SDL_DECLSPEC bool SDLCALL MIX_SetTrackPlaybackPosition(MIX_Track *track, Uint64 frames);
+extern SDL_DECLSPEC bool SDLCALL MIX_SetTrackPlaybackPosition(MIX_Track *track, Sint64 frames);
 
 /**
  * Get the current input position of a playing track.
@@ -1375,7 +1375,7 @@ extern SDL_DECLSPEC Sint64 SDLCALL MIX_GetTrackRemaining(MIX_Track *track);
  *
  * \sa MIX_TrackFramesToMS
  */
-extern SDL_DECLSPEC Uint64 SDLCALL MIX_TrackMSToFrames(MIX_Track *track, Uint64 ms);
+extern SDL_DECLSPEC Sint64 SDLCALL MIX_TrackMSToFrames(MIX_Track *track, Sint64 ms);
 
 /**
  * Convert sample frames for a track's current format to milliseconds.
@@ -1404,7 +1404,7 @@ extern SDL_DECLSPEC Uint64 SDLCALL MIX_TrackMSToFrames(MIX_Track *track, Uint64
  *
  * \sa MIX_TrackMSToFrames
  */
-extern SDL_DECLSPEC Uint64 SDLCALL MIX_TrackFramesToMS(MIX_Track *track, Uint64 frames);
+extern SDL_DECLSPEC Sint64 SDLCALL MIX_TrackFramesToMS(MIX_Track *track, Sint64 frames);
 
 /**
  * Convert milliseconds to sample frames for a MIX_Audio's format.
@@ -1422,7 +1422,7 @@ extern SDL_DECLSPEC Uint64 SDLCALL MIX_TrackFramesToMS(MIX_Track *track, Uint64
  *
  * \sa MIX_AudioFramesToMS
  */
-extern SDL_DECLSPEC Uint64 SDLCALL MIX_AudioMSToFrames(MIX_Audio *audio, Uint64 ms);
+extern SDL_DECLSPEC Sint64 SDLCALL MIX_AudioMSToFrames(MIX_Audio *audio, Sint64 ms);
 
 /**
  * Convert sample frames for a MIX_Audio's format to milliseconds.
@@ -1443,7 +1443,7 @@ extern SDL_DECLSPEC Uint64 SDLCALL MIX_AudioMSToFrames(MIX_Audio *audio, Uint64
  *
  * \sa MIX_AudioMSToFrames
  */
-extern SDL_DECLSPEC Uint64 SDLCALL MIX_AudioFramesToMS(MIX_Audio *audio, Uint64 frames);
+extern SDL_DECLSPEC Sint64 SDLCALL MIX_AudioFramesToMS(MIX_Audio *audio, Sint64 frames);
 
 /**
  * Convert milliseconds to sample frames at a specific sample rate.
@@ -1460,7 +1460,7 @@ extern SDL_DECLSPEC Uint64 SDLCALL MIX_AudioFramesToMS(MIX_Audio *audio, Uint64
  *
  * \sa MIX_FramesToMS
  */
-extern SDL_DECLSPEC Uint64 SDLCALL MIX_MSToFrames(int sample_rate, Uint64 ms);
+extern SDL_DECLSPEC Sint64 SDLCALL MIX_MSToFrames(int sample_rate, Sint64 ms);
 
 /**
  * Convert sample frames, at a specific sample rate, to milliseconds.
@@ -1480,7 +1480,7 @@ extern SDL_DECLSPEC Uint64 SDLCALL MIX_MSToFrames(int sample_rate, Uint64 ms);
  *
  * \sa MIX_MSToFrames
  */
-extern SDL_DECLSPEC Uint64 SDLCALL MIX_FramesToMS(int sample_rate, Uint64 frames);
+extern SDL_DECLSPEC Sint64 SDLCALL MIX_FramesToMS(int sample_rate, Sint64 frames);
 
 
 /* operations that deal with actual mixing/playback... */
diff --git a/src/SDL_mixer.c b/src/SDL_mixer.c
index 67837468..8020acc8 100644
--- a/src/SDL_mixer.c
+++ b/src/SDL_mixer.c
@@ -1774,7 +1774,7 @@ void MIX_UntagTrack(MIX_Track *track, const char *tag)
     SDL_UnlockProperties(tags);
 }
 
-bool MIX_SetTrackPlaybackPosition(MIX_Track *track, Uint64 frames)
+bool MIX_SetTrackPlaybackPosition(MIX_Track *track, Sint64 frames)
 {
     if (!CheckTrackParam(track)) {
         return false;
@@ -1791,10 +1791,10 @@ bool MIX_SetTrackPlaybackPosition(MIX_Track *track, Uint64 frames)
             retval = SDL_SetError("No audio currently assigned to this track");
         }
     } else {
-        retval = track->input_audio->decoder->seek(track->decoder_userdata, frames);
+        retval = track->input_audio->decoder->seek(track->decoder_userdata, (Uint64) frames);
         if (retval) {
             SDL_ClearAudioStream(track->input_stream);   // make sure that any extra buffered input from before the seek is removed.
-            track->position = frames;
+            track->position = (Uint64) frames;
         }
     }
     UnlockTrack(track);
@@ -1864,25 +1864,25 @@ SDL_AudioStream *MIX_GetTrackAudioStream(MIX_Track *track)
     return retval;
 }
 
-Uint64 MIX_MSToFrames(int sample_rate, Uint64 ms)
+Sint64 MIX_MSToFrames(int sample_rate, Sint64 ms)
 {
     if (sample_rate <= 0) {
         return 0;
     }
-    return (Uint64) ((((double) ms) / 1000.0) * ((double) sample_rate));
+    return (Sint64) ((((double) ms) / 1000.0) * ((double) sample_rate));
 }
 
-Uint64 MIX_FramesToMS(int sample_rate, Uint64 frames)
+Sint64 MIX_FramesToMS(int sample_rate, Sint64 frames)
 {
     if (sample_rate <= 0) {
         return 0;
     }
-    return (Uint64) ((((double) frames) / ((double) sample_rate)) * 1000.0);
+    return (Sint64) ((((double) frames) / ((double) sample_rate)) * 1000.0);
 }
 
-Uint64 MIX_TrackMSToFrames(MIX_Track *track, Uint64 ms)
+Sint64 MIX_TrackMSToFrames(MIX_Track *track, Sint64 ms)
 {
-    Uint64 retval = 0;
+    Sint64 retval = 0;
     if (CheckTrackParam(track)) {
         LockTrack(track);
         SDL_AudioSpec spec;
@@ -1899,9 +1899,9 @@ Uint64 MIX_TrackMSToFrames(MIX_Track *track, Uint64 ms)
     return retval;
 }
 
-Uint64 MIX_TrackFramesToMS(MIX_Track *track, Uint64 frames)
+Sint64 MIX_TrackFramesToMS(MIX_Track *track, Sint64 frames)
 {
-    Uint64 retval = 0;
+    Sint64 retval = 0;
     if (CheckTrackParam(track)) {
         LockTrack(track);
         SDL_AudioSpec spec;
@@ -1918,7 +1918,7 @@ Uint64 MIX_TrackFramesToMS(MIX_Track *track, Uint64 frames)
     return retval;
 }
 
-Uint64 MIX_AudioMSToFrames(MIX_Audio *audio, Uint64 ms)
+Sint64 MIX_AudioMSToFrames(MIX_Audio *audio, Sint64 ms)
 {
     if (!CheckAudioParam(audio)) {
         return 0;
@@ -1926,7 +1926,7 @@ Uint64 MIX_AudioMSToFrames(MIX_Audio *audio, Uint64 ms)
     return MIX_MSToFrames(audio->spec.freq, ms);
 }
 
-Uint64 MIX_AudioFramesToMS(MIX_Audio *audio, Uint64 frames)
+Sint64 MIX_AudioFramesToMS(MIX_Audio *audio, Sint64 frames)
 {
     if (!CheckAudioParam(audio)) {
         return 0;