diff options
| author | 2018-08-24 11:54:07 +0000 | |
|---|---|---|
| committer | 2018-08-24 11:54:07 +0000 | |
| commit | a3647d51676ffbeb2e111e62a5399f0ed90bc30c (patch) | |
| tree | 9c9841d414091eb5363d390f5f50d709e2888e18 | |
| parent | 44b6289c3c6410b28e7918ba79a114f02a9a6b07 (diff) | |
| parent | 67f3ba156d6687155e731504279a86875a35b743 (diff) | |
Merge "Fix display freezing when screen size mismatches"
| -rw-r--r-- | services/core/java/com/android/server/wm/ScreenRotationAnimation.java | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java index 2f189a6bcdb9..df97027da64f 100644 --- a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java +++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java @@ -16,20 +16,18 @@ package com.android.server.wm; -import static com.android.server.wm.WindowManagerDebugConfig.SHOW_LIGHT_TRANSACTIONS; +import static com.android.server.wm.ScreenRotationAnimationProto.ANIMATION_RUNNING; +import static com.android.server.wm.ScreenRotationAnimationProto.STARTED; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_SURFACE_ALLOC; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_TRANSACTIONS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowManagerService.TYPE_LAYER_MULTIPLIER; import static com.android.server.wm.WindowStateAnimator.WINDOW_FREEZE_LAYER; -import static com.android.server.wm.ScreenRotationAnimationProto.ANIMATION_RUNNING; -import static com.android.server.wm.ScreenRotationAnimationProto.STARTED; import android.content.Context; import android.graphics.Matrix; import android.graphics.Rect; -import android.os.IBinder; import android.util.Slog; import android.util.proto.ProtoOutputStream; import android.view.Display; @@ -37,7 +35,6 @@ import android.view.DisplayInfo; import android.view.Surface; import android.view.Surface.OutOfResourcesException; import android.view.SurfaceControl; -import android.view.SurfaceSession; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.animation.Transformation; @@ -268,6 +265,12 @@ class ScreenRotationAnimation { .setSecure(isSecure) .build(); + // In case display bounds change, screenshot buffer and surface may mismatch so set a + // scaling mode. + SurfaceControl.Transaction t2 = new SurfaceControl.Transaction(); + t2.setOverrideScalingMode(mSurfaceControl, Surface.SCALING_MODE_SCALE_TO_WINDOW); + t2.apply(true /* sync */); + // Capture a screenshot into the surface we just created. final int displayId = display.getDisplayId(); final Surface surface = new Surface(); |