equal
deleted
inserted
replaced
226 |
226 |
227 D(bug("CloseAudio..Done, subtask exiting...\n")); |
227 D(bug("CloseAudio..Done, subtask exiting...\n")); |
228 audio_configured = 0; |
228 audio_configured = 0; |
229 #endif |
229 #endif |
230 return(0); |
230 return(0); |
|
231 } |
|
232 |
|
233 static void SDL_LockAudio_Default(SDL_AudioDevice *audio) |
|
234 { |
|
235 if ( audio->thread && (SDL_ThreadID() == audio->threadid) ) { |
|
236 return; |
|
237 } |
|
238 SDL_mutexP(audio->mixer_lock); |
|
239 } |
|
240 |
|
241 static void SDL_UnlockAudio_Default(SDL_AudioDevice *audio) |
|
242 { |
|
243 if ( audio->thread && (SDL_ThreadID() == audio->threadid) ) { |
|
244 return; |
|
245 } |
|
246 SDL_mutexV(audio->mixer_lock); |
231 } |
247 } |
232 |
248 |
233 int SDL_AudioInit(const char *driver_name) |
249 int SDL_AudioInit(const char *driver_name) |
234 { |
250 { |
235 SDL_AudioDevice *audio; |
251 SDL_AudioDevice *audio; |
307 } |
323 } |
308 } |
324 } |
309 current_audio = audio; |
325 current_audio = audio; |
310 if ( current_audio ) { |
326 if ( current_audio ) { |
311 current_audio->name = bootstrap[i]->name; |
327 current_audio->name = bootstrap[i]->name; |
|
328 if ( !current_audio->LockAudio && !current_audio->UnlockAudio ) { |
|
329 current_audio->LockAudio = SDL_LockAudio_Default; |
|
330 current_audio->UnlockAudio = SDL_UnlockAudio_Default; |
|
331 } |
312 } |
332 } |
313 return(0); |
333 return(0); |
314 } |
334 } |
315 |
335 |
316 char *SDL_AudioDriverName(char *namebuf, int maxlen) |
336 char *SDL_AudioDriverName(char *namebuf, int maxlen) |
504 void SDL_LockAudio (void) |
524 void SDL_LockAudio (void) |
505 { |
525 { |
506 SDL_AudioDevice *audio = current_audio; |
526 SDL_AudioDevice *audio = current_audio; |
507 |
527 |
508 /* Obtain a lock on the mixing buffers */ |
528 /* Obtain a lock on the mixing buffers */ |
509 if ( audio ) { |
529 if ( audio && audio->LockAudio ) { |
510 if ( audio->thread && (SDL_ThreadID() == audio->threadid) ) { |
530 audio->LockAudio(audio); |
511 return; |
|
512 } |
|
513 SDL_mutexP(audio->mixer_lock); |
|
514 } |
531 } |
515 } |
532 } |
516 |
533 |
517 void SDL_UnlockAudio (void) |
534 void SDL_UnlockAudio (void) |
518 { |
535 { |
519 SDL_AudioDevice *audio = current_audio; |
536 SDL_AudioDevice *audio = current_audio; |
520 |
537 |
521 /* Release lock on the mixing buffers */ |
538 /* Release lock on the mixing buffers */ |
522 if ( audio ) { |
539 if ( audio && audio->UnlockAudio ) { |
523 if ( audio->thread && (SDL_ThreadID() == audio->threadid) ) { |
540 audio->UnlockAudio(audio); |
524 return; |
|
525 } |
|
526 SDL_mutexV(audio->mixer_lock); |
|
527 } |
541 } |
528 } |
542 } |
529 |
543 |
530 void SDL_CloseAudio (void) |
544 void SDL_CloseAudio (void) |
531 { |
545 { |