audio: Capture devices should respect logical device pausing.
This commit is contained in:
@@ -774,6 +774,10 @@ SDL_bool SDL_CaptureAudioThreadIterate(SDL_AudioDevice *device)
|
|||||||
retval = SDL_FALSE;
|
retval = SDL_FALSE;
|
||||||
} else if (rc > 0) { // queue the new data to each bound stream.
|
} else if (rc > 0) { // queue the new data to each bound stream.
|
||||||
for (SDL_LogicalAudioDevice *logdev = device->logical_devices; logdev != NULL; logdev = logdev->next) {
|
for (SDL_LogicalAudioDevice *logdev = device->logical_devices; logdev != NULL; logdev = logdev->next) {
|
||||||
|
if (SDL_AtomicGet(&logdev->paused)) {
|
||||||
|
continue; // paused? Skip this logical device.
|
||||||
|
}
|
||||||
|
|
||||||
for (SDL_AudioStream *stream = logdev->bound_streams; stream != NULL; stream = stream->next_binding) {
|
for (SDL_AudioStream *stream = logdev->bound_streams; stream != NULL; stream = stream->next_binding) {
|
||||||
/* this will hold a lock on `stream` while putting. We don't explicitly lock the streams
|
/* this will hold a lock on `stream` while putting. We don't explicitly lock the streams
|
||||||
for iterating here because the binding linked list can only change while the device lock is held.
|
for iterating here because the binding linked list can only change while the device lock is held.
|
||||||
|
|||||||
Reference in New Issue
Block a user