Improved: On Windows 8.1 and newer, installation as SFX/EFX is now the default. This should remove the need to use the troubleshooting options for most users.

This commit is contained in:
jthedering committed 2022-02-13 18:09:16 +00:00
1 parent c692f0639b
commit da3341ed42
2 files changed
+22 -1

No files matched your search

Binary file not shown.
+22 -1
View File
@@ -51,6 +51,9 @@ static const wchar_t* gfxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d
static const wchar_t* sfxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},5";
static const wchar_t* mfxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},6";
static const wchar_t* efxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},7";
static const wchar_t* multiSfxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},13";
static const wchar_t* multiMfxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},14";
static const wchar_t* multiEfxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},15";
static const unsigned allGuidValueNameCount = 5;
static const wchar_t* allGuidValueNames[] = {lfxGuidValueName, gfxGuidValueName, sfxGuidValueName, mfxGuidValueName, efxGuidValueName};
enum GuidValueIndices
@@ -80,7 +83,7 @@ vector<shared_ptr<AbstractAPOInfo>> DeviceAPOInfo::loadAllInfos(bool input)
{
wstring deviceGuidString = *it;
shared_ptr<DeviceAPOInfo> info = make_shared<DeviceAPOInfo>();
shared_ptr<DeviceAPOInfo> info = make_shared<DeviceAPOInfo> ();
if (info->load(deviceGuidString, defaultDeviceGuid))
{
info->selectedInstallState = info->currentInstallState;
@@ -352,6 +355,24 @@ bool DeviceAPOInfo::load(const wstring& deviceGuid, wstring defaultDeviceGuid)
}
}
}
else
{
if (RegistryHelper::isWindowsVersionAtLeast(6, 3)) // Windows 8.1
{
// only use LFX/GFX if the audio driver supplied only those APOs
if (RegistryHelper::keyExists(keyPath + L"\\FxProperties")
&& (RegistryHelper::valueExists(keyPath + L"\\FxProperties", lfxGuidValueName) || RegistryHelper::valueExists(keyPath + L"\\FxProperties", gfxGuidValueName))
&& !RegistryHelper::valueExists(keyPath + L"\\FxProperties", sfxGuidValueName)
&& !RegistryHelper::valueExists(keyPath + L"\\FxProperties", mfxGuidValueName)
&& !RegistryHelper::valueExists(keyPath + L"\\FxProperties", efxGuidValueName)
&& !RegistryHelper::valueExists(keyPath + L"\\FxProperties", multiSfxGuidValueName)
&& !RegistryHelper::valueExists(keyPath + L"\\FxProperties", multiMfxGuidValueName)
&& !RegistryHelper::valueExists(keyPath + L"\\FxProperties", multiEfxGuidValueName))
currentInstallState.installMode = INSTALL_LFX_GFX;
else
currentInstallState.installMode = INSTALL_SFX_EFX;
}
}
}
return true;