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 ed50734bacf0e1ce5f5ba8b360b6f1f7a82af186..0434b5539c40e61971dc2fe2b80adf1c017b82ad 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);