From 2a3a736f09881cd2d634be0f6e4b2986829a92fd Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Mon, 24 May 2021 17:00:18 -0500 Subject: [PATCH] Don't delete i2c bus list on redetect, as WMI query issues prevent them from being redetected --- ResourceManager.cpp | 25 ++++++++++--------------- i2c_smbus/i2c_smbus_i801.cpp | 1 + i2c_smbus/i2c_smbus_piix4.cpp | 1 + 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/ResourceManager.cpp b/ResourceManager.cpp index efe259c3..53f5bd9d 100644 --- a/ResourceManager.cpp +++ b/ResourceManager.cpp @@ -474,15 +474,6 @@ void ResourceManager::Cleanup() delete rgb_controller; } - std::vector busses_copy = busses; - - busses.clear(); - - for(i2c_smbus_interface* bus : busses_copy) - { - delete bus; - } - /*-------------------------------------------------*\ | Cleanup HID interface | \*-------------------------------------------------*/ @@ -645,14 +636,18 @@ void ResourceManager::DetectDevicesThreadFunction() detection_percent = 0; /*-------------------------------------------------*\ - | Detect i2c interfaces | + | Detect i2c interfaces - only perform on first | + | detection | \*-------------------------------------------------*/ - LOG_NOTICE("Detecting I2C interfaces"); - - for(unsigned int i2c_bus_detector_idx = 0; i2c_bus_detector_idx < i2c_bus_detectors.size() && detection_is_required.load(); i2c_bus_detector_idx++) + if(busses.empty()) { - i2c_bus_detectors[i2c_bus_detector_idx](); - I2CBusListChanged(); + LOG_NOTICE("Detecting I2C interfaces"); + + for(unsigned int i2c_bus_detector_idx = 0; i2c_bus_detector_idx < i2c_bus_detectors.size() && detection_is_required.load(); i2c_bus_detector_idx++) + { + i2c_bus_detectors[i2c_bus_detector_idx](); + I2CBusListChanged(); + } } /*-------------------------------------------------*\ diff --git a/i2c_smbus/i2c_smbus_i801.cpp b/i2c_smbus/i2c_smbus_i801.cpp index ca4b3216..e9af3063 100644 --- a/i2c_smbus/i2c_smbus_i801.cpp +++ b/i2c_smbus/i2c_smbus_i801.cpp @@ -507,6 +507,7 @@ void i2c_smbus_i801_detect() if (hres) { + LOG_NOTICE("WMI query failed, i801 I2C bus detection aborted"); return; } diff --git a/i2c_smbus/i2c_smbus_piix4.cpp b/i2c_smbus/i2c_smbus_piix4.cpp index d5c5a6da..82e7b1e2 100644 --- a/i2c_smbus/i2c_smbus_piix4.cpp +++ b/i2c_smbus/i2c_smbus_piix4.cpp @@ -201,6 +201,7 @@ void i2c_smbus_piix4_detect() if (hres) { + LOG_NOTICE("WMI query failed, piix4 I2C bus detection aborted"); return; }