diff options
| author | 2024-12-11 19:51:22 +0000 | |
|---|---|---|
| committer | 2024-12-11 13:30:59 -0800 | |
| commit | 8cc976854ee82edfb419eff70532b9f012d45934 (patch) | |
| tree | d39038aae0ced0c5a715dea8ac83b1c469c8ab71 | |
| parent | 69fe63d28343dac58e3d4dcb6105f06e488d5cc8 (diff) | |
Always use seamless transition flag when capturing a transition
All transitions capture a screenshot, parent it above everything else in
its container, then orphans the layer once the container has finished
applying its transactions to complete the transition. That is, by
definition, a seamless transition.
This is important for HDR, as previously the seamless transition flag
was NOT used, which was causing tonemapping into SDR rather than
capturing display-relative pixels. Then, if HDR layers were captured,
we'd disable SDR dimming when displaying the screenshot, which
effectively inverse-tonemapped the screenshot into HDR, which caused a
flashing effect.
Bug: 383512175
Flag: EXEMPT bug fix
Test: Circle to Search an HDR video
Change-Id: I04a0828caea2daf293d838c5a03a109822c0bdda
| -rw-r--r-- | services/core/java/com/android/server/wm/Transition.java | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index bcd12f253299..b4a22b0dd034 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -4150,7 +4150,9 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { .setSourceCrop(cropBounds) .setCaptureSecureLayers(true) .setAllowProtected(true) - .setHintForSeamlessTransition(isDisplayRotation) + // We always reroute this screenshot to the display, so this transition + // is ALWAYS seamless + .setHintForSeamlessTransition(true) .build(); ScreenCapture.ScreenshotHardwareBuffer screenshotBuffer = ScreenCapture.captureLayers(captureArgs); |