浏览代码

[Issue #9] mp3 crash (huoshan12345).

Wei Mingzhi 9 年之前
父节点
当前提交
af46ee0285
共有 1 个文件被更改,包括 9 次插入8 次删除
  1. 9 8
      sound.c

+ 9 - 8
sound.c

@@ -217,10 +217,10 @@ SOUND_FillAudio(
    if (!g_fNoMusic)
    {
 #ifdef PAL_HAS_MP3
+      SDL_mutexP(gSndPlayer.lock);
+
       if (gSndPlayer.pMP3 != NULL)
       {
-         SDL_mutexP(gSndPlayer.lock);
-
          mad_getSamples(gSndPlayer.pMP3, stream, len);
 
          if (!mad_isPlaying(gSndPlayer.pMP3) && gSndPlayer.fMP3Loop)
@@ -230,9 +230,9 @@ SOUND_FillAudio(
 
             mad_getSamples(gSndPlayer.pMP3, stream, len);
          }
+      }
 
-         SDL_mutexV(gSndPlayer.lock);
-      }
+      SDL_mutexV(gSndPlayer.lock);
 #endif
       RIX_FillBuffer(stream, len);
    }
@@ -656,22 +656,23 @@ PAL_PlayMUS(
 #endif
 
 #ifdef PAL_HAS_MP3
+   SDL_mutexP(gSndPlayer.lock);
+
    if (gSndPlayer.pMP3 != NULL)
    {
       if (iNumRIX == gSndPlayer.iCurrentMP3 && !g_fNoMusic)
       {
+         SDL_mutexV(gSndPlayer.lock);
          return;
       }
 
-      SDL_mutexP(gSndPlayer.lock);
-
       mad_stop(gSndPlayer.pMP3);
       mad_closeFile(gSndPlayer.pMP3);
 
       gSndPlayer.pMP3 = NULL;
+   }
 
-      SDL_mutexV(gSndPlayer.lock);
-   }
+   SDL_mutexV(gSndPlayer.lock);
 
    gSndPlayer.iCurrentMP3 = -1;