From dd47256f06545f9ffd2024975b39a277e59e60be Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Fri, 24 Sep 2021 12:20:34 -0500 Subject: [PATCH] Initialize WMI only once, remove init calls from everywhere it is called and initialize it once as a static variable * See comment: https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues/1581#note_684260496 --- Controllers/AsusTUFLaptopController/AsusTUFLaptopWMIDetect.cpp | 1 - dependencies/dmiinfo.cpp | 1 - i2c_smbus/i2c_smbus_i801.cpp | 1 - i2c_smbus/i2c_smbus_piix4.cpp | 1 - wmi/wmi.cpp | 1 + wmi/wmi.h | 2 +- 6 files changed, 2 insertions(+), 5 deletions(-) diff --git a/Controllers/AsusTUFLaptopController/AsusTUFLaptopWMIDetect.cpp b/Controllers/AsusTUFLaptopController/AsusTUFLaptopWMIDetect.cpp index 04077a92..45d03a99 100644 --- a/Controllers/AsusTUFLaptopController/AsusTUFLaptopWMIDetect.cpp +++ b/Controllers/AsusTUFLaptopController/AsusTUFLaptopWMIDetect.cpp @@ -16,7 +16,6 @@ static void DetectAsusTUFLaptopWMIControllers(std::vector&) // For now, checking for "TUF Gaming" should suffice Wmi wmi; - wmi.init(); std::vector systemProduct; if (wmi.query("SELECT * FROM Win32_ComputerSystemProduct", systemProduct)) diff --git a/dependencies/dmiinfo.cpp b/dependencies/dmiinfo.cpp index 8e210d43..dbec8bad 100644 --- a/dependencies/dmiinfo.cpp +++ b/dependencies/dmiinfo.cpp @@ -27,7 +27,6 @@ DMIInfo::DMIInfo() manufacturer = ""; HRESULT hres; Wmi wmi; - wmi.init(); // Query WMI for Win32_PnPSignedDriver entries with names matching "SMBUS" or "SM BUS" // These devices may be browsed under Device Manager -> System Devices diff --git a/i2c_smbus/i2c_smbus_i801.cpp b/i2c_smbus/i2c_smbus_i801.cpp index 800e9d53..814b46a3 100644 --- a/i2c_smbus/i2c_smbus_i801.cpp +++ b/i2c_smbus/i2c_smbus_i801.cpp @@ -498,7 +498,6 @@ void i2c_smbus_i801_detect() i2c_smbus_interface * bus; HRESULT hres; Wmi wmi; - wmi.init(); // Query WMI for Win32_PnPSignedDriver entries with names matching "SMBUS" or "SM BUS" // These devices may be browsed under Device Manager -> System Devices diff --git a/i2c_smbus/i2c_smbus_piix4.cpp b/i2c_smbus/i2c_smbus_piix4.cpp index 8a74162e..496d7328 100644 --- a/i2c_smbus/i2c_smbus_piix4.cpp +++ b/i2c_smbus/i2c_smbus_piix4.cpp @@ -192,7 +192,6 @@ void i2c_smbus_piix4_detect() i2c_smbus_interface * bus; HRESULT hres; Wmi wmi; - wmi.init(); // Query WMI for Win32_PnPSignedDriver entries with names matching "SMBUS" or "SM BUS" // These devices may be browsed under Device Manager -> System Devices diff --git a/wmi/wmi.cpp b/wmi/wmi.cpp index f2de70dd..2678202a 100644 --- a/wmi/wmi.cpp +++ b/wmi/wmi.cpp @@ -2,6 +2,7 @@ IWbemLocator* Wmi::pLoc = nullptr; IWbemServices* Wmi::pSvc = nullptr; +HRESULT WmiInit = Wmi::init(); // Taken from https://stackoverflow.com/questions/215963/ // Convert a wide Unicode string to an UTF8 string diff --git a/wmi/wmi.h b/wmi/wmi.h index 8565fa3d..1963eb72 100644 --- a/wmi/wmi.h +++ b/wmi/wmi.h @@ -26,7 +26,7 @@ public: ~Wmi(); // Initialises connection to WMI host - HRESULT init(); + static HRESULT init(); HRESULT query(std::string queryStr, std::vector& queryVectorOut,