Mercurial > hg > dmlib
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: |