audio: SDL_GetAudioDeviceName() now works with the default device IDs.

Fixes #14615.
This commit is contained in:
Ryan C. Gordon
2025-12-08 11:24:21 -05:00
parent a35639c7b5
commit 6f774908fe
3 changed files with 18 additions and 0 deletions

View File

@@ -1579,6 +1579,14 @@ const char *SDL_GetAudioDeviceName(SDL_AudioDeviceID devid)
// remains valid (in case the device is unplugged at the wrong moment), we hold the
// subsystem_rwlock while we copy the string.
SDL_LockRWLockForReading(current_audio.subsystem_rwlock);
// Allow default device IDs to be used, just return the current default physical device's name.
if (devid == SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK) {
devid = current_audio.default_playback_device_id;
} else if (devid == SDL_AUDIO_DEVICE_DEFAULT_RECORDING) {
devid = current_audio.default_recording_device_id;
}
SDL_FindInHashTable(islogical ? current_audio.device_hash_logical : current_audio.device_hash_physical, (const void *) (uintptr_t) devid, &vdev);
if (!vdev) {
SDL_SetError("Invalid audio device instance ID");