diff src/dmengine.c @ 845:1d3d220fb5cc

Fix audio playback.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 21 Oct 2014 10:31:03 +0300
parents 1e5cf1144f36
children 05a3ee1ca964
line wrap: on
line diff
--- a/src/dmengine.c	Tue Oct 21 09:34:20 2014 +0300
+++ b/src/dmengine.c	Tue Oct 21 10:31:03 2014 +0300
@@ -398,34 +398,37 @@
 
 void engineAudioCallback(void *userdata, Uint8 *stream, int len)
 {
-    (void) userdata;
+    DMEngineData *engine = (DMEngineData *) userdata;
+
+    if (engine == NULL)
+        return;
 
-    dmMutexLock(engine.audioStreamMutex);
-    engine.audioStreamBuf  = stream;
-    engine.audioStreamLen  = len / engine.audioSampleSize;
-    engine.audioTimePos   += (1000 * engine.audioStreamLen) / engine.optAfmt.freq;
+    dmMutexLock(engine->audioStreamMutex);
+    engine->audioStreamBuf  = stream;
+    engine->audioStreamLen  = len / engine->audioSampleSize;
+    engine->audioTimePos   += (1000 * engine->audioStreamLen) / engine->optAfmt.freq;
 
-    if (engine.paused)
+    if (engine->paused)
     {
         memset(stream, 0, len);
     }
     else
-    switch (engine.optAudioSetup)
+    switch (engine->optAudioSetup)
     {
 #ifdef DM_USE_JSS
         case DM_ASETUP_JSS:
-            if (engine.jssDev != NULL)
-                jvmRenderAudio(engine.jssDev, stream, len / engine.audioSampleSize);
+            if (engine->jssDev != NULL)
+                jvmRenderAudio(engine->jssDev, stream, len / engine->audioSampleSize);
             break;
 #endif
 #ifdef DM_USE_TREMOR
         case DM_ASETUP_TREMOR:
-            if (engine.audioPos + len >= engine.audioRes->resSize)
-                engine.exitFlag = TRUE;
+            if (engine->audioPos + len >= engine->audioRes->resSize)
+                engine->exitFlag = TRUE;
             else
             {
-                memcpy(stream, engine.audioRes->resData + engine.audioPos, len);
-                engine.audioPos += len;
+                memcpy(stream, engine->audioRes->resData + engine->audioPos, len);
+                engine->audioPos += len;
             }
             break;
 #endif
@@ -434,7 +437,7 @@
             break;
     }
 
-    dmMutexUnlock(engine.audioStreamMutex);
+    dmMutexUnlock(engine->audioStreamMutex);
 }