diff --git a/idd/LGIddHelper/CRegistrySettings.cpp b/idd/LGIddHelper/CRegistrySettings.cpp index db002da1..b9b3ddd0 100644 --- a/idd/LGIddHelper/CRegistrySettings.cpp +++ b/idd/LGIddHelper/CRegistrySettings.cpp @@ -8,6 +8,8 @@ #define LGIDD_REGKEY L"SOFTWARE\\LookingGlass\\IDD" +const DWORD DEFAULT_REFRESH = 120; + CRegistrySettings::CRegistrySettings() : hKey(nullptr) {} CRegistrySettings::~CRegistrySettings() @@ -136,3 +138,25 @@ std::wstring DisplayMode::toString() serialized.push_back('*'); return serialized; } + +std::optional CRegistrySettings::getDefaultRefresh() +{ + DWORD result, cbData = sizeof result; + + LSTATUS status = RegGetValue(hKey, nullptr, L"DefaultRefresh", RRF_RT_REG_DWORD, nullptr, &result, &cbData); + switch (status) + { + case ERROR_SUCCESS: + return result; + case ERROR_FILE_NOT_FOUND: + return DEFAULT_REFRESH; + default: + DEBUG_ERROR_HR(status, "RegGetValue(Modes) length computation"); + return {}; + } +} + +LSTATUS CRegistrySettings::setDefaultRefresh(DWORD refresh) +{ + return RegSetValueEx(hKey, L"DefaultRefresh", 0, REG_DWORD, (LPBYTE) &refresh, sizeof(DWORD)); +} diff --git a/idd/LGIddHelper/CRegistrySettings.h b/idd/LGIddHelper/CRegistrySettings.h index 21b6f697..e77ba99c 100644 --- a/idd/LGIddHelper/CRegistrySettings.h +++ b/idd/LGIddHelper/CRegistrySettings.h @@ -26,4 +26,7 @@ public: std::optional> getModes(); LSTATUS setModes(const std::vector &modes); + + std::optional getDefaultRefresh(); + LSTATUS setDefaultRefresh(DWORD refresh); };