Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4546de08 authored by John Reck's avatar John Reck
Browse files

Fix brightness change during screenrotation

When doing a layer capture for seamless transitions
avoid clamping the max HDR headroom.

Fixes: 288063548
Test: repro steps in bug
Change-Id: Ic90c8b4478ad90b1776c455cbe696ec22182496d
(cherry picked from commit 1dadaa6b)
parent d430717d
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -7424,7 +7424,10 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
                                      renderArea->getHintForSeamlessTransition());
            sdrWhitePointNits = state.sdrWhitePointNits;
            displayBrightnessNits = state.displayBrightnessNits;
            if (sdrWhitePointNits > 1.0f) {
            // Only clamp the display brightness if this is not a seamless transition. Otherwise
            // for seamless transitions it's important to match the current display state as the
            // buffer will be shown under these same conditions, and we want to avoid any flickers
            if (sdrWhitePointNits > 1.0f && !renderArea->getHintForSeamlessTransition()) {
                // Restrict the amount of HDR "headroom" in the screenshot to avoid over-dimming
                // the SDR portion. 2.0 chosen by experimentation
                constexpr float kMaxScreenshotHeadroom = 2.0f;