From 059f3647405b3d80f9f5d8a816ca53c1a4d54c2f Mon Sep 17 00:00:00 2001 From: mazmazz Date: Fri, 31 Aug 2018 13:52:01 -0400 Subject: [PATCH] Add Mixer X retrieve song length and position natively, if available --- src/sdl/mixer_sound.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/sdl/mixer_sound.c b/src/sdl/mixer_sound.c index d4c8869b1..e0b8de869 100644 --- a/src/sdl/mixer_sound.c +++ b/src/sdl/mixer_sound.c @@ -776,6 +776,11 @@ UINT32 I_GetSongLength(void) return 0; else { +#ifdef HAVE_MIXERX + double xlength = Mix_GetMusicTotalTime(music); + if (xlength >= 0) + return (UINT32)floor(xlength * 1000.); +#endif // VERY IMPORTANT to set your LENGTHMS= in your song files, folks! // SDL mixer can't read music length itself. length = (UINT32)(song_length*1000); @@ -915,10 +920,17 @@ UINT32 I_GetSongPosition(void) if (!music || I_SongType() == MU_MID) return 0; else + { +#ifdef HAVE_MIXERX + double xposition = Mix_GetMusicPosition(music); + if (xposition >= 0) + return (UINT32)floor(xposition * 1000.); +#endif return music_bytes/44100.0L*1000.0L/4; //assume 44.1khz // 4 = byte length for 16-bit samples (AUDIO_S16SYS), stereo (2-channel) // This is hardcoded in I_StartupSound. Other formats for factor: // 8M: 1 | 8S: 2 | 16M: 2 | 16S: 4 + } } /// ------------------------