SDL_audio.h

Función SDL_LockAudioDevice

Sintaxis

void SDL_LockAudioDevice(SDL_AudioDeviceID dev);

Descripción

Esta función sirve para bloquear la función de retrollamada de audio para un dispositivo especificado.

Parámetros

dev
El ID del dispositivo a bloquear.

Observaciones

El bloqueo manipulado por estas funciones protege la función callback de audio especificada en SDL_OpenAudioDevice(). Durante un par SDL_LockAudioDevice()/SDL_UnlockAudioDevice(), se puede garantizar que la función callback para ese dispositivo no se está ejecutando, incluso si el dispositivo no está pausado. Mientras un dispositivo está bloqueado, cualquier otro dispositivo desbloqueado y no pausado puede seguir ejecutando sus retrollamadas.

Llamar a esta función desde dentro de un callback de audio es innecesario. SDL obtiene este bloqueo antes de llamar a la función, y lo libera cuando la función regresa.

No se debe mantener el bloqueo más tiempo del absolutamente necesario. Si se mantiene demasiado tiempo, se experimentarán caídas en la reproducción de audio. Lo ideal es que la aplicación bloquee el dispositivo, establezca algunas variables y vuelva a desbloquearlo. No se deben realizar trabajos pesados mientras se mantiene el bloqueo de un dispositivo.

Es seguro bloquear el dispositivo de audio varias veces, siempre y cuando se desbloquee un número equivalente de veces. La retrollamada no se ejecutará hasta que el dispositivo se haya desbloqueado completamente de esta forma. Si la aplicación falla en desbloquear el dispositivo apropiadamente, la retrollamada nunca se ejecutará, se podrían escuchar ráfagas repetidas de audio, y SDL_CloseAudioDevice() probablemente se bloqueará.

Internamente, el bloqueo del dispositivo de audio es un mutex; si se bloquea desde dos hilos a la vez, no sólo se bloqueará la retrollamada de audio, sino también el otro hilo.