From ebeb9d028e86cd09ad32b90a8c50cfd577af1a6c Mon Sep 17 00:00:00 2001 From: Quantum Date: Wed, 3 Jun 2026 00:47:40 -0400 Subject: [PATCH] [idd] helper/registry: load and store no GPU preference --- idd/LGIddHelper/CRegistrySettings.cpp | 25 ++++++++++++++++++++++++- idd/LGIddHelper/CRegistrySettings.h | 3 +++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/idd/LGIddHelper/CRegistrySettings.cpp b/idd/LGIddHelper/CRegistrySettings.cpp index 8e38ed4d..0742bf08 100644 --- a/idd/LGIddHelper/CRegistrySettings.cpp +++ b/idd/LGIddHelper/CRegistrySettings.cpp @@ -171,7 +171,7 @@ std::optional CRegistrySettings::getDefaultRefresh() case ERROR_FILE_NOT_FOUND: return DEFAULT_REFRESH; default: - DEBUG_ERROR_HR(status, "RegGetValue(Modes) length computation"); + DEBUG_ERROR_HR(status, "RegGetValue(Modes)"); return {}; } } @@ -180,3 +180,26 @@ LSTATUS CRegistrySettings::setDefaultRefresh(DWORD refresh) { return RegSetValueEx(hKey, L"DefaultRefresh", 0, REG_DWORD, (LPBYTE) &refresh, sizeof(DWORD)); } + +std::optional CRegistrySettings::getNoGPU() +{ + DWORD result, cbData = sizeof result; + + LSTATUS status = RegGetValue(hKey, nullptr, L"NoGPU", RRF_RT_REG_DWORD, nullptr, &result, &cbData); + switch (status) + { + case ERROR_SUCCESS: + return !!result; + case ERROR_FILE_NOT_FOUND: + return false; + default: + DEBUG_ERROR_HR(status, "RegGetValue(NoGPU)"); + return {}; + } +} + +LSTATUS CRegistrySettings::setNoGPU(bool noGPU) +{ + DWORD dwValue = noGPU; + return RegSetValueEx(hKey, L"NoGPU", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); +} diff --git a/idd/LGIddHelper/CRegistrySettings.h b/idd/LGIddHelper/CRegistrySettings.h index 83af6a50..ee3e1504 100644 --- a/idd/LGIddHelper/CRegistrySettings.h +++ b/idd/LGIddHelper/CRegistrySettings.h @@ -49,4 +49,7 @@ public: std::optional getDefaultRefresh(); LSTATUS setDefaultRefresh(DWORD refresh); + + std::optional getNoGPU(); + LSTATUS setNoGPU(bool noGPU); };