mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-05-29 04:21:03 +08:00
audio: Add NULL check to SDL_UnbindAudioStreams
This commit is contained in:
committed by
Ryan C. Gordon
parent
1b99467c71
commit
49153ebfc4
@@ -990,7 +990,7 @@ extern SDL_DECLSPEC bool SDLCALL SDL_BindAudioStream(SDL_AudioDeviceID devid, SD
|
|||||||
*
|
*
|
||||||
* Unbinding a stream that isn't bound to a device is a legal no-op.
|
* Unbinding a stream that isn't bound to a device is a legal no-op.
|
||||||
*
|
*
|
||||||
* \param streams an array of audio streams to unbind.
|
* \param streams an array of audio streams to unbind. Can be NULL or contain NULL.
|
||||||
* \param num_streams number streams listed in the `streams` array.
|
* \param num_streams number streams listed in the `streams` array.
|
||||||
*
|
*
|
||||||
* \threadsafety It is safe to call this function from any thread.
|
* \threadsafety It is safe to call this function from any thread.
|
||||||
@@ -1007,7 +1007,7 @@ extern SDL_DECLSPEC void SDLCALL SDL_UnbindAudioStreams(SDL_AudioStream * const
|
|||||||
* This is a convenience function, equivalent to calling
|
* This is a convenience function, equivalent to calling
|
||||||
* `SDL_UnbindAudioStreams(&stream, 1)`.
|
* `SDL_UnbindAudioStreams(&stream, 1)`.
|
||||||
*
|
*
|
||||||
* \param stream an audio stream to unbind from a device.
|
* \param stream an audio stream to unbind from a device. Can be NULL.
|
||||||
*
|
*
|
||||||
* \threadsafety It is safe to call this function from any thread.
|
* \threadsafety It is safe to call this function from any thread.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1949,6 +1949,10 @@ bool SDL_BindAudioStream(SDL_AudioDeviceID devid, SDL_AudioStream *stream)
|
|||||||
// !!! FIXME: this and BindAudioStreams are mutex nightmares. :/
|
// !!! FIXME: this and BindAudioStreams are mutex nightmares. :/
|
||||||
void SDL_UnbindAudioStreams(SDL_AudioStream * const *streams, int num_streams)
|
void SDL_UnbindAudioStreams(SDL_AudioStream * const *streams, int num_streams)
|
||||||
{
|
{
|
||||||
|
if (num_streams <= 0 || !streams) {
|
||||||
|
return; // nothing to do
|
||||||
|
}
|
||||||
|
|
||||||
/* to prevent deadlock when holding both locks, we _must_ lock the device first, and the stream second, as that is the order the audio thread will do it.
|
/* to prevent deadlock when holding both locks, we _must_ lock the device first, and the stream second, as that is the order the audio thread will do it.
|
||||||
But this means we have an unlikely, pathological case where a stream could change its binding between when we lookup its bound device and when we lock everything,
|
But this means we have an unlikely, pathological case where a stream could change its binding between when we lookup its bound device and when we lock everything,
|
||||||
so we double-check here. */
|
so we double-check here. */
|
||||||
|
|||||||
Reference in New Issue
Block a user