Fix crash in Settings window if no audio devices present
parent
b1fff2621b
commit
eccaa7a127
|
@ -45,7 +45,7 @@ struct BlankAudioPlayback
|
|||
HRESULT err;
|
||||
err = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&mmEnumerator);
|
||||
if(FAILED(err))
|
||||
CrashError(TEXT("Could not create IMMDeviceEnumerator"));
|
||||
CrashError(TEXT("Could not create IMMDeviceEnumerator: 0x%08lx"), err);
|
||||
|
||||
if (scmpi(lpDevice, TEXT("Default")) == 0)
|
||||
err = mmEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &mmDevice);
|
||||
|
|
|
@ -35,7 +35,7 @@ void GetAudioDevices(AudioDeviceList &deviceList, AudioDeviceType deviceType, bo
|
|||
err = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&mmEnumerator);
|
||||
if(FAILED(err))
|
||||
{
|
||||
AppWarning(TEXT("GetAudioDevices: Could not create IMMDeviceEnumerator"));
|
||||
AppWarning(TEXT("GetAudioDevices: Could not create IMMDeviceEnumerator: 0x%08lx"), err);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -234,8 +234,18 @@ void SettingsAudio::RefreshDevices(AudioDeviceType desktopDeviceType)
|
|||
for(UINT i=0; i<storage.recordingDevices.devices.Num(); i++)
|
||||
SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)storage.recordingDevices.devices[i].strName.Array());
|
||||
|
||||
String strPlaybackID = AppConfig->GetString(TEXT("Audio"), TEXT("PlaybackDevice"), storage.playbackDevices.devices[0].strID);
|
||||
String strDeviceID = AppConfig->GetString(TEXT("Audio"), TEXT("Device"), storage.recordingDevices.devices[0].strID);
|
||||
String strPlaybackID;
|
||||
String strDeviceID;
|
||||
|
||||
if (storage.playbackDevices.devices.Num())
|
||||
AppConfig->GetString(TEXT("Audio"), TEXT("PlaybackDevice"), storage.playbackDevices.devices[0].strID);
|
||||
else
|
||||
AppConfig->GetString(TEXT("Audio"), TEXT("PlaybackDevice"));
|
||||
|
||||
if (storage.recordingDevices.devices.Num())
|
||||
strDeviceID = AppConfig->GetString(TEXT("Audio"), TEXT("Device"), storage.recordingDevices.devices[0].strID);
|
||||
else
|
||||
strDeviceID = AppConfig->GetString(TEXT("Audio"), TEXT("Device"));
|
||||
|
||||
UINT iPlaybackDevice;
|
||||
for(iPlaybackDevice=0; iPlaybackDevice<storage.playbackDevices.devices.Num(); iPlaybackDevice++)
|
||||
|
@ -257,7 +267,7 @@ void SettingsAudio::RefreshDevices(AudioDeviceType desktopDeviceType)
|
|||
}
|
||||
}
|
||||
|
||||
if(iPlaybackDevice == storage.playbackDevices.devices.Num())
|
||||
if (iPlaybackDevice && iPlaybackDevice == storage.playbackDevices.devices.Num())
|
||||
{
|
||||
AppConfig->SetString(TEXT("Audio"), TEXT("PlaybackDevice"), storage.playbackDevices.devices[0].strID);
|
||||
SendMessage(hwndPlayback, CB_SETCURSEL, 0, 0);
|
||||
|
@ -265,7 +275,7 @@ void SettingsAudio::RefreshDevices(AudioDeviceType desktopDeviceType)
|
|||
SetChangedSettings(true);
|
||||
}
|
||||
|
||||
if(iDevice == storage.recordingDevices.devices.Num())
|
||||
if (iDevice && iDevice == storage.recordingDevices.devices.Num())
|
||||
{
|
||||
AppConfig->SetString(TEXT("Audio"), TEXT("Device"), storage.recordingDevices.devices[0].strID);
|
||||
SendMessage(hwndTemp, CB_SETCURSEL, 0, 0);
|
||||
|
|
Loading…
Reference in New Issue