mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-10-16 14:56:00 +00:00
Fixed infinite recursion when the microphone is unavailable
This commit is contained in:
@@ -436,7 +436,12 @@ static bool UpdateAudioSession(SDL_AudioDevice *device, bool open, bool allow_pl
|
||||
}
|
||||
}
|
||||
} else if (data.playback && data.recording) {
|
||||
category = AVAudioSessionCategoryPlayAndRecord;
|
||||
if (allow_playandrecord) {
|
||||
category = AVAudioSessionCategoryPlayAndRecord;
|
||||
} else {
|
||||
// We already failed play and record with AVAudioSessionErrorCodeResourceNotAvailable
|
||||
return false;
|
||||
}
|
||||
} else if (data.recording) {
|
||||
category = AVAudioSessionCategoryRecord;
|
||||
}
|
||||
@@ -494,12 +499,15 @@ static bool UpdateAudioSession(SDL_AudioDevice *device, bool open, bool allow_pl
|
||||
if (![session setActive:YES error:&err]) {
|
||||
if ([err code] == AVAudioSessionErrorCodeResourceNotAvailable &&
|
||||
category == AVAudioSessionCategoryPlayAndRecord) {
|
||||
return UpdateAudioSession(device, open, false);
|
||||
if (UpdateAudioSession(device, open, false)) {
|
||||
return true;
|
||||
} else {
|
||||
return SDL_SetError("Could not activate Audio Session: Resource not available");
|
||||
}
|
||||
}
|
||||
|
||||
NSString *desc = err.description;
|
||||
SDL_SetError("Could not activate Audio Session: %s", desc.UTF8String);
|
||||
return false;
|
||||
return SDL_SetError("Could not activate Audio Session: %s", desc.UTF8String);
|
||||
}
|
||||
session_active = true;
|
||||
ResumeAudioDevices();
|
||||
|
Reference in New Issue
Block a user