diff --git a/src/operate.cpp b/src/operate.cpp index ecaacce..a2a0917 100644 --- a/src/operate.cpp +++ b/src/operate.cpp @@ -391,6 +391,7 @@ void Operate::setUserMode(user_mode userMode) const { fan_mode fanMode = fan_mode::auto_fan_mode; bool superBattery = false; QString userModeStr; + Settings s; switch (userMode) { case user_mode::balanced_mode: @@ -413,6 +414,9 @@ void Operate::setUserMode(user_mode userMode) const { return; } + if (s.isValueExist(settingsGroup + "fanModeAdvanced") && s.getValue(settingsGroup + "fanModeAdvanced").toBool()) + fanMode = fan_mode::advanced_fan_mode; + if (msiEcHelper.hasShiftMode()) { msiEcHelper.setShiftMode(shiftMode); } @@ -553,8 +557,22 @@ void Operate::loadSettings() const { void Operate::handleWakeEvent() const { Settings s; - if (s.isValueExist(settingsGroup + "fanModeAdvanced")) + + // refresh the ec data cache after wakeup + std::ignore = updateEcData(); + + if (s.isValueExist(settingsGroup + "fanModeAdvanced")) { setFanModeAdvanced(s.getValue(settingsGroup + "fanModeAdvanced").toBool()); + + if (s.isValueExist(settingsGroup + "fan1SpeedSettings")) + setFan1SpeedSettings(s.getValueVector(settingsGroup + "fan1SpeedSettings")); + if (s.isValueExist(settingsGroup + "fan2SpeedSettings")) + setFan2SpeedSettings(s.getValueVector(settingsGroup + "fan2SpeedSettings")); + if (s.isValueExist(settingsGroup + "fan1TempSettings")) + setFan1TempSettings(s.getValueVector(settingsGroup + "fan1TempSettings")); + if (s.isValueExist(settingsGroup + "fan2TempSettings")) + setFan2TempSettings(s.getValueVector(settingsGroup + "fan2TempSettings")); + } } int Operate::detectFan1Address() const {