comparison src/dmsimple.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
61 } 61 }
62 62
63 63
64 static int engineAudioThreadFunc(void *userdata) 64 static int engineAudioThreadFunc(void *userdata)
65 { 65 {
66 DMEngineData *engine = (DMEngineData *) userdata;
67 if (engine == NULL)
68 return 0;
69
66 do 70 do
67 { 71 {
68 if (engine.audioStatus == SDL_AUDIO_PLAYING) 72 dmMutexLock(engine->audioStreamMutex);
69 { 73 if (engine->audioStatus == SDL_AUDIO_PLAYING)
70 engineAudioCallback(userdata, engine.audioSimBuf, engine.audioSimBufSize); 74 {
71 } 75 engineAudioCallback(userdata, engine->audioSimBuf, engine->audioSimBufSize);
72 76 }
73 SDL_Delay(engine.audioSimDelay); 77 dmMutexUnlock(engine->audioStreamMutex);
74 } while (!engine.audioSimDone); 78
79 SDL_Delay(engine->audioSimDelay);
80 } while (!engine->audioSimDone);
75 81
76 return 0; 82 return 0;
77 } 83 }
78 84
79 85
679 // Initialize SDL audio 685 // Initialize SDL audio
680 dmPrint(1, "Trying to init SDL audio with: fmt=%d, chn=%d, freq=%d, samples=%d\n", 686 dmPrint(1, "Trying to init SDL audio with: fmt=%d, chn=%d, freq=%d, samples=%d\n",
681 engine.optAfmt.format, engine.optAfmt.channels, 687 engine.optAfmt.format, engine.optAfmt.channels,
682 engine.optAfmt.freq, engine.optAfmt.samples); 688 engine.optAfmt.freq, engine.optAfmt.samples);
683 689
690 engine.audioStreamMutex = dmCreateMutex();
684 engine.audioStatus = SDL_AUDIO_STOPPED; 691 engine.audioStatus = SDL_AUDIO_STOPPED;
685 engine.optAfmt.callback = engineAudioCallback; 692 engine.optAfmt.callback = engineAudioCallback;
686 engine.audioStreamMutex = dmCreateMutex(); 693 engine.optAfmt.userdata = (void *) &engine;
687 694
688 engine.audioSampleSize = engine.optAfmt.channels; 695 engine.audioSampleSize = engine.optAfmt.channels;
689 switch (engine.optAfmt.format) 696 switch (engine.optAfmt.format)
690 { 697 {
691 case AUDIO_S16SYS: 698 case AUDIO_S16SYS: