diff options
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 5991b86d5d..ee1ea4040d 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -1732,11 +1732,15 @@ status_t SurfaceFlinger::setDisplayBrightness(const sp<IBinder>& displayToken, // If we support applying display brightness as a command, then we also support // dimming SDR layers. if (supportsDisplayBrightnessCommand) { - display->getCompositionDisplay() - ->setDisplayBrightness(brightness.sdrWhitePointNits, - brightness.displayBrightnessNits); + auto compositionDisplay = display->getCompositionDisplay(); + float currentDimmingRatio = + compositionDisplay->editState().sdrWhitePointNits / + compositionDisplay->editState().displayBrightnessNits; + compositionDisplay->setDisplayBrightness(brightness.sdrWhitePointNits, + brightness.displayBrightnessNits); MAIN_THREAD_GUARD(display->stageBrightness(brightness.displayBrightness)); - if (hasVisibleHdrLayer(display)) { + if (brightness.sdrWhitePointNits / brightness.displayBrightnessNits != + currentDimmingRatio) { scheduleComposite(FrameHint::kNone); } else { scheduleCommit(FrameHint::kNone); |