summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2018-08-22 15:43:17 +0200
committerJorim Jaggi <jjaggi@google.com>2018-08-22 15:55:31 +0000
commitda4997312c79bfb5b5c6fb31833fc2ce401c4457 (patch)
treea6063a33ff776e826a9f340012a5c90ea31c489d
parent2bd9a25007fcec5612944af7db0d1aa4d9849351 (diff)
downloadbase-da4997312c79bfb5b5c6fb31833fc2ce401c4457.tar.gz
DO NOT MERGE Fix display freezing when screen size mismatches
If we have a display size change, make sure to set different scaling mode such that we can show the buffer even if there is a size mismatch. Test: Rotate screen Test: Change cutout type Bug: 112876936 Change-Id: Iedc7774d69730a95b98ba46d4f274bc3b7e66bd1
-rw-r--r--services/core/java/com/android/server/wm/ScreenRotationAnimation.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
index fa8a5c66aeea..755a571cf5f7 100644
--- a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
+++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
@@ -37,6 +37,7 @@ import android.view.DisplayInfo;
import android.view.Surface;
import android.view.Surface.OutOfResourcesException;
import android.view.SurfaceControl;
+import android.view.SurfaceControl.Transaction;
import android.view.SurfaceSession;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
@@ -268,6 +269,12 @@ class ScreenRotationAnimation {
.setSecure(isSecure)
.build();
+ // In case display bounds change, screenshot buffer and surface may mismatch so set a
+ // scaling mode.
+ Transaction t2 = new Transaction();
+ t2.setOverrideScalingMode(mSurfaceControl, Surface.SCALING_MODE_SCALE_TO_WINDOW);
+ t2.apply(true /* sync */);
+
// capture a screenshot into the surface we just created
// TODO(multidisplay): we should use the proper display
final int displayId = SurfaceControl.BUILT_IN_DISPLAY_ID_MAIN;