OSDN Git Service

Don't apply rounded-corner animation on non-default display
authorTiger Huang <tigerhuang@google.com>
Wed, 24 Apr 2019 10:39:53 +0000 (18:39 +0800)
committerTiger Huang <tigerhuang@google.com>
Wed, 24 Apr 2019 10:42:22 +0000 (18:42 +0800)
Non-default displays usually don't have rounded-corners. It doesn't
make sense to apply rounded-corner animations on them. Besides, we
don't know if an external display has rounded-corners or not.

Bug: 131040127
Test: Follow the reproduction steps in the bug.
Change-Id: I0b892bfb50875eaa59b2bf5ba07074bb3494042b

services/core/java/com/android/server/wm/AppWindowThumbnail.java
services/core/java/com/android/server/wm/AppWindowToken.java
services/core/java/com/android/server/wm/WindowState.java
services/core/java/com/android/server/wm/WindowToken.java

index 9f7cb3d..6318486 100644 (file)
@@ -129,7 +129,7 @@ class AppWindowThumbnail implements Animatable {
         mSurfaceAnimator.startAnimation(t, new LocalAnimationAdapter(
                 new WindowAnimationSpec(anim, position,
                         mAppToken.getDisplayContent().mAppTransition.canSkipFirstFrame(),
-                        mAppToken.mWmService.mWindowCornerRadius),
+                        mAppToken.getWindowCornerRadiusForAnimation()),
                 mAppToken.mWmService.mSurfaceAnimationRunner), false /* hidden */);
     }
 
index a53f85d..155ab41 100644 (file)
@@ -21,8 +21,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
 import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
 import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
 import static android.content.pm.ActivityInfo.COLOR_MODE_DEFAULT;
-import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION;
-import static android.content.pm.ActivityInfo.CONFIG_SCREEN_SIZE;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET;
 import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
@@ -2542,7 +2540,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
                                     getDisplayContent().mAppTransition.canSkipFirstFrame(),
                                     appStackClipMode,
                                     true /* isAppAnimation */,
-                                    mWmService.mWindowCornerRadius),
+                                    getWindowCornerRadiusForAnimation()),
                             mWmService.mSurfaceAnimationRunner);
                     if (a.getZAdjustment() == Animation.ZORDER_TOP) {
                         mNeedsZBoost = true;
index 4105487..c29b132 100644 (file)
@@ -4553,7 +4553,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
         anim.scaleCurrentDuration(mWmService.getWindowAnimationScaleLocked());
         final AnimationAdapter adapter = new LocalAnimationAdapter(
                 new WindowAnimationSpec(anim, mSurfacePosition, false /* canSkipFirstFrame */,
-                        mWmService.mWindowCornerRadius),
+                        mToken.getWindowCornerRadiusForAnimation()),
                 mWmService.mSurfaceAnimationRunner);
         startAnimation(mPendingTransaction, adapter);
         commitPendingTransaction();
index f0b9c62..f65f0ab 100644 (file)
@@ -345,4 +345,8 @@ class WindowToken extends WindowContainer<WindowState> {
                 mOwnerCanManageAppTokens);
         return mOwnerCanManageAppTokens && (layer > navLayer);
     }
+
+    float getWindowCornerRadiusForAnimation() {
+        return mDisplayContent.isDefaultDisplay ? mWmService.mWindowCornerRadius : 0;
+    }
 }