diff --git a/brightness_manager/include/brightness_service.h b/brightness_manager/include/brightness_service.h index 1a1d2da1f46387ba7511ab42a437046fd5bc6329..59156125bb2581153042ceb6cd0ff655e931f695 100644 --- a/brightness_manager/include/brightness_service.h +++ b/brightness_manager/include/brightness_service.h @@ -184,6 +184,7 @@ private: std::atomic mIsBrightnessBoosted{false}; uint32_t mCachedSettingBrightness{DEFAULT_BRIGHTNESS}; uint32_t mOverriddenBrightness{DEFAULT_BRIGHTNESS}; + uint32_t mBeforeOverriddenBrightness{DEFAULT_BRIGHTNESS}; std::shared_ptr mAction{nullptr}; std::shared_ptr mDimmingCallback{nullptr}; std::shared_ptr mDimming; diff --git a/brightness_manager/src/brightness_service.cpp b/brightness_manager/src/brightness_service.cpp index 8827688c6deed77bcb1e2a2816ea3bf497ffcda7..0f64c22a763a68687887965793a29719396e6bfb 100644 --- a/brightness_manager/src/brightness_service.cpp +++ b/brightness_manager/src/brightness_service.cpp @@ -386,6 +386,11 @@ void BrightnessService::ProcessLightLux(float lux) void BrightnessService::UpdateCurrentBrightnessLevel(float lux, bool isFastDuration) { + if (!CanSetBrightness()) { + DISPLAY_HILOGW(FEAT_BRIGHTNESS, "Cannot UpdateCurrentBrightnessLevel, ignore the change"); + return; + } + uint32_t brightnessLevel = GetBrightnessLevel(lux); if (mBrightnessLevel != brightnessLevel) { uint32_t duration = DEFAULT_BRIGHTEN_DURATION; @@ -520,6 +525,7 @@ bool BrightnessService::OverrideBrightness(uint32_t value, uint32_t gradualDurat mIsBrightnessOverridden = true; } mOverriddenBrightness = value; + mBeforeOverriddenBrightness = GetSettingBrightness(); return UpdateBrightness(value, gradualDuration); } @@ -530,7 +536,7 @@ bool BrightnessService::RestoreBrightness(uint32_t gradualDuration) return false; } mIsBrightnessOverridden = false; - return UpdateBrightness(mCachedSettingBrightness, gradualDuration, true); + return UpdateBrightness(mBeforeOverriddenBrightness, gradualDuration, true); } bool BrightnessService::IsBrightnessOverridden()