Revert change disabling redetection of i2c interfaces and fix disconnected WMI failure by always reconnecting before query
This commit is contained in:
parent
2a3a736f09
commit
33b840b2b9
2 changed files with 27 additions and 10 deletions
|
|
@ -474,6 +474,15 @@ void ResourceManager::Cleanup()
|
|||
delete rgb_controller;
|
||||
}
|
||||
|
||||
std::vector<i2c_smbus_interface *> busses_copy = busses;
|
||||
|
||||
busses.clear();
|
||||
|
||||
for(i2c_smbus_interface* bus : busses_copy)
|
||||
{
|
||||
delete bus;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------*\
|
||||
| Cleanup HID interface |
|
||||
\*-------------------------------------------------*/
|
||||
|
|
@ -636,18 +645,14 @@ void ResourceManager::DetectDevicesThreadFunction()
|
|||
detection_percent = 0;
|
||||
|
||||
/*-------------------------------------------------*\
|
||||
| Detect i2c interfaces - only perform on first |
|
||||
| detection |
|
||||
| Detect i2c interfaces |
|
||||
\*-------------------------------------------------*/
|
||||
if(busses.empty())
|
||||
{
|
||||
LOG_NOTICE("Detecting I2C interfaces");
|
||||
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();
|
||||
}
|
||||
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();
|
||||
}
|
||||
|
||||
/*-------------------------------------------------*\
|
||||
|
|
|
|||
12
wmi/wmi.cpp
12
wmi/wmi.cpp
|
|
@ -147,6 +147,18 @@ HRESULT Wmi::query(std::string queryStr, std::vector<QueryObj>& queryVectorOut,
|
|||
int nIdx = 0;
|
||||
IEnumWbemClassObject* pEnumerator = nullptr;
|
||||
|
||||
// Reconnect to server before each query as we were seeing disconnected failures
|
||||
hres = pLoc->ConnectServer(
|
||||
_bstr_t(L"ROOT\\CIMV2"), // Object path of WMI namespace
|
||||
nullptr, // User name. NULL = current user
|
||||
nullptr, // User password. NULL = current
|
||||
nullptr, // Locale. NULL indicates current
|
||||
0, // Security flags.
|
||||
nullptr, // Authority (for example, Kerberos)
|
||||
nullptr, // Context object
|
||||
&pSvc // pointer to IWbemServices proxy
|
||||
);
|
||||
|
||||
// Make the WMI query
|
||||
hres = pSvc->ExecQuery(
|
||||
bstr_t("WQL"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue