changed warnings and debug output to use new generic logging functions
[rocksndiamonds.git] / src / libgame / sound.c
index ed50734bacf0e1ce5f5ba8b360b6f1f7a82af186..2375c06f98f57c4bdb0fb0e2f00435b665ad3b42 100644 (file)
@@ -4,7 +4,7 @@
 // (c) 1995-2014 by Artsoft Entertainment
 //                         Holger Schemel
 //                 info@artsoft.org
-//                 http://www.artsoft.org/
+//                 https://www.artsoft.org/
 // ----------------------------------------------------------------------------
 // sound.c
 // ============================================================================
@@ -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);
@@ -404,8 +409,8 @@ static void Mixer_InsertSound(SoundControl snd_ctrl)
     {
       if (!mixer[i].active)
       {
-       Error(ERR_INFO, "Mixer_InsertSound: Channel %d inactive", i);
-       Error(ERR_INFO, "Mixer_InsertSound: This should never happen!");
+       Debug("audio", "Mixer_InsertSound: Channel %d inactive", i);
+       Debug("audio", "Mixer_InsertSound: This should never happen!");
 
        mixer_active_channels--;
       }
@@ -533,8 +538,10 @@ static void *Load_WAV(char *filename)
 
   if ((snd_info->data_ptr = Mix_LoadWAV(filename)) == NULL)
   {
-    Error(ERR_WARN, "cannot read sound file '%s': %s", filename, Mix_GetError());
+    Warn("cannot read sound file '%s': %s", filename, Mix_GetError());
+
     free(snd_info);
+
     return NULL;
   }
 
@@ -557,8 +564,10 @@ static void *Load_MOD(char *filename)
 
   if ((mod_info->data_ptr = Mix_LoadMUS(filename)) == NULL)
   {
-    Error(ERR_WARN, "cannot read music file '%s': %s", filename, Mix_GetError());
+    Warn("cannot read music file '%s': %s", filename, Mix_GetError());
+
     free(mod_info);
+
     return NULL;
   }
 
@@ -602,7 +611,7 @@ static void LoadCustomMusic_NoConf(void)
 
   if ((dir = openDirectory(music_directory)) == NULL)
   {
-    Error(ERR_WARN, "cannot read music directory '%s'", music_directory);
+    Warn("cannot read music directory '%s'", music_directory);
 
     audio.music_available = FALSE;