diff --git a/idd/LGIddHelper/CRegistrySettings.cpp b/idd/LGIddHelper/CRegistrySettings.cpp index 8e38ed4d..1cda0708 100644 --- a/idd/LGIddHelper/CRegistrySettings.cpp +++ b/idd/LGIddHelper/CRegistrySettings.cpp @@ -78,6 +78,24 @@ static std::optional parseDisplayMode(const std::wstring &str) return mode; } +std::vector CRegistrySettings::getDefaultModes() +{ + auto defaultRefresh = getDefaultRefresh(); + int refresh = defaultRefresh ? *defaultRefresh : DEFAULT_REFRESH; + + std::vector result; + for (int i = 0; i < ARRAYSIZE(DefaultDisplayModes); ++i) + { + DisplayMode mode; + mode.width = DefaultDisplayModes[i][0]; + mode.height = DefaultDisplayModes[i][1]; + mode.refresh = refresh; + mode.preferred = i == DefaultPreferredDisplayMode; + result.emplace_back(mode); + } + return result; +} + std::optional> CRegistrySettings::getModes() { LSTATUS status; @@ -89,19 +107,7 @@ std::optional> CRegistrySettings::getModes() case ERROR_SUCCESS: break; case ERROR_FILE_NOT_FOUND: - { - std::vector result; - for (int i = 0; i < ARRAYSIZE(DefaultDisplayModes); ++i) - { - DisplayMode mode; - mode.width = DefaultDisplayModes[i][0]; - mode.height = DefaultDisplayModes[i][1]; - mode.refresh = DefaultDisplayModes[i][2]; - mode.preferred = i == DefaultPreferredDisplayMode; - result.emplace_back(mode); - } - return result; - } + return getDefaultModes(); default: DEBUG_ERROR_HR(status, "RegGetValue(Modes) length computation"); return {}; diff --git a/idd/LGIddHelper/CRegistrySettings.h b/idd/LGIddHelper/CRegistrySettings.h index 83af6a50..49801985 100644 --- a/idd/LGIddHelper/CRegistrySettings.h +++ b/idd/LGIddHelper/CRegistrySettings.h @@ -44,6 +44,7 @@ public: LSTATUS open(); bool isOpen() { return !!hKey; } + std::vector getDefaultModes(); std::optional> getModes(); LSTATUS setModes(const std::vector &modes);