Improved: The Configuration Editor now saves most of its state (window positions, open files, etc.) when closing and restores it when run again.
Fixed: The GUI for the Copy command was behaving incorrectly when channels were selected by number instead of name. Fixed: When the processing caused delay (e.g. via Delay command), the remaining audio was not output when the input signal became silence (e.g. pausing a music player), but only when the silence ended. Fixed: The checks for missing registry values in Configuration Editor/Configurator should now be sufficient to reanimate E-APO after an OS upgrade. Also the Configurator did not launch when accepting the question in the Configuration Editor with UAC enabled.
This commit is contained in:
1 parent
0895d84055
commit
a1be4cc70f
32 files changed
+1111
-205
No files matched your search
@@ -20,6 +20,7 @@
|
||||
#include "stdafx.h"
|
||||
#include <mmdeviceapi.h>
|
||||
#include <mmreg.h>
|
||||
#include <shellapi.h>
|
||||
|
||||
#include "DeviceAPOInfo.h"
|
||||
|
||||
@@ -30,6 +31,8 @@ using namespace std;
|
||||
|
||||
#define protectedDGKeyPath L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Audio"
|
||||
#define protectedDGValueName L"DisableProtectedAudioDG"
|
||||
#define apoRegistrationKeyPath L"HKEY_CLASSES_ROOT\\AudioEngine\\AudioProcessingObjects"
|
||||
#define clsidKeyPath L"HKEY_CLASSES_ROOT\\CLSID"
|
||||
#define commonKeyPath L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio"
|
||||
#define renderKeyPath commonKeyPath L"\\Render"
|
||||
#define captureKeyPath commonKeyPath L"\\Capture"
|
||||
@@ -134,6 +137,32 @@ bool DeviceAPOInfo::checkProtectedAudioDG(bool fix)
|
||||
return result;
|
||||
}
|
||||
|
||||
bool DeviceAPOInfo::checkAPORegistration(bool fix)
|
||||
{
|
||||
bool result = true;
|
||||
|
||||
if (!RegistryHelper::keyExists(apoRegistrationKeyPath L"\\" + RegistryHelper::getGuidString(EQUALIZERAPO_PRE_MIX_GUID))
|
||||
|| !RegistryHelper::keyExists(apoRegistrationKeyPath L"\\" + RegistryHelper::getGuidString(EQUALIZERAPO_POST_MIX_GUID))
|
||||
|| !RegistryHelper::keyExists(clsidKeyPath L"\\" + RegistryHelper::getGuidString(EQUALIZERAPO_PRE_MIX_GUID))
|
||||
|| !RegistryHelper::keyExists(clsidKeyPath L"\\" + RegistryHelper::getGuidString(EQUALIZERAPO_POST_MIX_GUID)))
|
||||
{
|
||||
result = false;
|
||||
|
||||
if (fix)
|
||||
{
|
||||
wchar_t path[MAX_PATH];
|
||||
if(GetModuleFileNameW(NULL, path, MAX_PATH) != 0)
|
||||
{
|
||||
PathRemoveFileSpecW(path);
|
||||
wstring params = wstring(L"/s \"") + path + L"\\EqualizerAPO.dll\"";
|
||||
ShellExecuteW(NULL, L"open", L"regsvr32.exe", params.c_str(), NULL, SW_SHOWNORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool DeviceAPOInfo::load(const wstring& deviceGuid, wstring defaultDeviceGuid)
|
||||
{
|
||||
wstring keyPath;
|
||||
|
||||
Reference in new issue
Block a user