comparison 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
comparison
equal deleted inserted replaced
844:5ea0bf4379b1 845:1d3d220fb5cc
396 } 396 }
397 397
398 398
399 void engineAudioCallback(void *userdata, Uint8 *stream, int len) 399 void engineAudioCallback(void *userdata, Uint8 *stream, int len)
400 { 400 {
401 (void) userdata; 401 DMEngineData *engine = (DMEngineData *) userdata;
402 402
403 dmMutexLock(engine.audioStreamMutex); 403 if (engine == NULL)
404 engine.audioStreamBuf = stream; 404 return;
405 engine.audioStreamLen = len / engine.audioSampleSize; 405
406 engine.audioTimePos += (1000 * engine.audioStreamLen) / engine.optAfmt.freq; 406 dmMutexLock(engine->audioStreamMutex);
407 407 engine->audioStreamBuf = stream;
408 if (engine.paused) 408 engine->audioStreamLen = len / engine->audioSampleSize;
409 engine->audioTimePos += (1000 * engine->audioStreamLen) / engine->optAfmt.freq;
410
411 if (engine->paused)
409 { 412 {
410 memset(stream, 0, len); 413 memset(stream, 0, len);
411 } 414 }
412 else 415 else
413 switch (engine.optAudioSetup) 416 switch (engine->optAudioSetup)
414 { 417 {
415 #ifdef DM_USE_JSS 418 #ifdef DM_USE_JSS
416 case DM_ASETUP_JSS: 419 case DM_ASETUP_JSS:
417 if (engine.jssDev != NULL) 420 if (engine->jssDev != NULL)
418 jvmRenderAudio(engine.jssDev, stream, len / engine.audioSampleSize); 421 jvmRenderAudio(engine->jssDev, stream, len / engine->audioSampleSize);
419 break; 422 break;
420 #endif 423 #endif
421 #ifdef DM_USE_TREMOR 424 #ifdef DM_USE_TREMOR
422 case DM_ASETUP_TREMOR: 425 case DM_ASETUP_TREMOR:
423 if (engine.audioPos + len >= engine.audioRes->resSize) 426 if (engine->audioPos + len >= engine->audioRes->resSize)
424 engine.exitFlag = TRUE; 427 engine->exitFlag = TRUE;
425 else 428 else
426 { 429 {
427 memcpy(stream, engine.audioRes->resData + engine.audioPos, len); 430 memcpy(stream, engine->audioRes->resData + engine->audioPos, len);
428 engine.audioPos += len; 431 engine->audioPos += len;
429 } 432 }
430 break; 433 break;
431 #endif 434 #endif
432 435
433 default: 436 default:
434 break; 437 break;
435 } 438 }
436 439
437 dmMutexUnlock(engine.audioStreamMutex); 440 dmMutexUnlock(engine->audioStreamMutex);
438 } 441 }
439 442
440 443
441 void enginePauseAudio(int status) 444 void enginePauseAudio(int status)
442 { 445 {