fixed sporadic problems when playing MP3 files on Windows
authorHolger Schemel <info@artsoft.org>
Mon, 3 Jun 2019 20:10:25 +0000 (22:10 +0200)
committerHolger Schemel <info@artsoft.org>
Mon, 3 Jun 2019 20:18:20 +0000 (22:18 +0200)
This change (hopefully) fixes a problem that may sporadically occur
when playing MP3 files on Windows, in which case audio output is
either completely silent or music is stuttering instead of playing
normally.

The problem seems to be fixed by stopping the music channel before
playing the next track.

src/libgame/sound.c

index ed50734..0434b55 100644 (file)
@@ -131,6 +131,7 @@ static void ReloadCustomMusic(void);
 static void FreeSound(void *);
 static void FreeMusic(void *);
 static void FreeAllMusic_NoConf(void);
+static void Mixer_StopMusicChannel(void);
 
 static SoundInfo *getSoundInfoEntryFromSoundID(int);
 static MusicInfo *getMusicInfoEntryFromMusicID(int);
@@ -223,6 +224,10 @@ static void Mixer_PlayMusicChannel(void)
   {
     int loops = (IS_LOOP(mixer[audio.music_channel]) ? -1 : 1);
 
+    // stopping music channel before playing next track seems to be needed to
+    // prevent audio problems that may occur when playing MP3 files on Windows
+    Mixer_StopMusicChannel();
+
     // use short fade-in to prevent "plop" sound for certain music files
     // (this may happen when switching on music while playing the game)
     Mix_VolumeMusic(mixer[audio.music_channel].volume);