diff options
Diffstat (limited to 'Alc/backends/dsound.c')
-rw-r--r-- | Alc/backends/dsound.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/Alc/backends/dsound.c b/Alc/backends/dsound.c index e2375137..851dd9e2 100644 --- a/Alc/backends/dsound.c +++ b/Alc/backends/dsound.c @@ -86,7 +86,6 @@ typedef struct { GUID guid; } DevMap; -static const ALCchar dsDevice[] = "DirectSound Default"; static DevMap *PlaybackDeviceList; static ALuint NumPlaybackDevices; static DevMap *CaptureDeviceList; @@ -312,18 +311,21 @@ static ALCenum DSoundOpenPlayback(ALCdevice *device, const ALCchar *deviceName) LPGUID guid = NULL; HRESULT hr; - if(!deviceName) - deviceName = dsDevice; - else if(strcmp(deviceName, dsDevice) != 0) + if(!PlaybackDeviceList) { - ALuint i; + hr = DirectSoundEnumerateA(DSoundEnumPlaybackDevices, NULL); + if(FAILED(hr)) + ERR("Error enumerating DirectSound devices (%#x)!\n", (unsigned int)hr); + } - if(!PlaybackDeviceList) - { - hr = DirectSoundEnumerateA(DSoundEnumPlaybackDevices, NULL); - if(FAILED(hr)) - ERR("Error enumerating DirectSound devices (%#x)!\n", (unsigned int)hr); - } + if(!deviceName && NumPlaybackDevices > 0) + { + deviceName = PlaybackDeviceList[0].name; + guid = &PlaybackDeviceList[0].guid; + } + else + { + ALuint i; for(i = 0;i < NumPlaybackDevices;i++) { |