Loading services/java/com/android/server/wm/WindowAnimator.java +24 −33 Original line number Diff line number Diff line Loading @@ -10,17 +10,19 @@ import static com.android.server.wm.WindowManagerService.LayoutFields.SET_WALLPA import static com.android.server.wm.WindowManagerService.LayoutFields.SET_FORCE_HIDING_CHANGED; import static com.android.server.wm.WindowManagerService.H.SET_DIM_PARAMETERS; import static com.android.server.wm.WindowManagerService.H.UPDATE_ANIM_PARAMETERS; import android.content.Context; import android.os.SystemClock; import android.util.Log; import android.util.Slog; import android.view.Choreographer; import android.view.Surface; import android.view.WindowManagerPolicy; import android.view.animation.Animation; import com.android.internal.policy.impl.PhoneWindowManager; import com.android.server.wm.WindowManagerService.AnimatorToLayoutParams; import com.android.server.wm.WindowManagerService.LayoutToAnimatorParams; import java.io.PrintWriter; import java.util.ArrayList; Loading @@ -36,22 +38,10 @@ public class WindowAnimator { final Context mContext; final WindowManagerPolicy mPolicy; final Choreographer mChoreographer = Choreographer.getInstance(); ArrayList<WindowStateAnimator> mWinAnimators = new ArrayList<WindowStateAnimator>(); boolean mAnimating; static class LayoutToAnimatorParams { boolean mAnimationScheduled; ArrayList<WindowStateAnimator> mWinAnimators = new ArrayList<WindowStateAnimator>(); WindowState mWallpaperTarget; } /** Params from WindowManagerService. Do not modify or read without first locking on * either WindowManagerService.mWindowMap or WindowManagerService.mAnimator.and then on * mLayoutToAnim */ final LayoutToAnimatorParams mLayoutToAnim = new LayoutToAnimatorParams(); final Runnable mAnimationRunnable; int mAdjResult; Loading Loading @@ -95,6 +85,8 @@ public class WindowAnimator { WindowState mWallpaperTarget = null; final AnimatorToLayoutParams mAnimToLayout = new AnimatorToLayoutParams(); WindowAnimator(final WindowManagerService service, final Context context, final WindowManagerPolicy policy) { mService = service; Loading @@ -118,9 +110,24 @@ public class WindowAnimator { mWindowAnimationBackgroundSurface = new DimSurface(mService.mFxSession); } /** Locked on mAnimToLayout */ void updateAnimToLayoutLocked() { final AnimatorToLayoutParams animToLayout = mAnimToLayout; synchronized (animToLayout) { animToLayout.mBulkUpdateParams = mBulkUpdateParams; animToLayout.mPendingLayoutChanges = mPendingLayoutChanges; animToLayout.mWindowDetachedWallpaper = mWindowDetachedWallpaper; if (!animToLayout.mUpdateQueued) { animToLayout.mUpdateQueued = true; mService.mH.sendMessage(mService.mH.obtainMessage(UPDATE_ANIM_PARAMETERS)); } } } /** Copy all WindowManagerService params into local params here. Locked on 'this'. */ private void copyLayoutToAnimParamsLocked() { final LayoutToAnimatorParams layoutToAnim = mLayoutToAnim; final LayoutToAnimatorParams layoutToAnim = mService.mLayoutToAnim; synchronized(layoutToAnim) { layoutToAnim.mAnimationScheduled = false; Loading @@ -129,16 +136,6 @@ public class WindowAnimator { } } /** Note that Locked in this case is on mLayoutToAnim */ void scheduleAnimationLocked() { final LayoutToAnimatorParams layoutToAnim = mLayoutToAnim; if (!layoutToAnim.mAnimationScheduled) { layoutToAnim.mAnimationScheduled = true; mChoreographer.postCallback( Choreographer.CALLBACK_ANIMATION, mAnimationRunnable, null); } } void hideWallpapersLocked(final WindowState w) { if ((mService.mWallpaperTarget == w && mService.mLowerWallpaperTarget == null) || mService.mWallpaperTarget == null) { Loading Loading @@ -544,18 +541,12 @@ public class WindowAnimator { } if (mBulkUpdateParams != 0 || mPendingLayoutChanges != 0) { final WindowManagerService.AnimatorToLayoutParams animToLayout = mService.mAnimToLayout; synchronized (animToLayout) { animToLayout.mBulkUpdateParams = mBulkUpdateParams; animToLayout.mPendingLayoutChanges = mPendingLayoutChanges; animToLayout.mWindowDetachedWallpaper = mWindowDetachedWallpaper; mService.setAnimatorParametersLocked(); } updateAnimToLayoutLocked(); } if (mAnimating) { synchronized (mLayoutToAnim) { scheduleAnimationLocked(); synchronized (mService.mLayoutToAnim) { mService.scheduleAnimationLocked(); } } else if (wasAnimating) { mService.requestTraversalLocked(); Loading services/java/com/android/server/wm/WindowManagerService.java +41 −27 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ import android.util.DisplayMetrics; import android.util.EventLog; import android.util.FloatMath; import android.util.Log; import android.util.LogPrinter; //import android.util.LogPrinter; import android.util.Pair; import android.util.Slog; import android.util.SparseIntArray; Loading Loading @@ -648,6 +648,7 @@ public class WindowManagerService extends IWindowManager.Stub } final LayoutFields mInnerFields = new LayoutFields(); // TODO: Move this into WindowAnimator. For some reason it causes the H class to blow up. /* Parameters being passed from mAnimator into this. * Do not modify unless holding (mWindowMap or mAnimator) and mAnimToLayout in that order */ static class AnimatorToLayoutParams { Loading @@ -656,7 +657,17 @@ public class WindowManagerService extends IWindowManager.Stub int mPendingLayoutChanges; WindowState mWindowDetachedWallpaper; } final AnimatorToLayoutParams mAnimToLayout = new AnimatorToLayoutParams(); static class LayoutToAnimatorParams { boolean mAnimationScheduled; ArrayList<WindowStateAnimator> mWinAnimators = new ArrayList<WindowStateAnimator>(); WindowState mWallpaperTarget; DimAnimator.Parameters mDimParams; } /** Params from WindowManagerService . Do not modify or read without first locking on * either WindowManagerService.mWindowMap or WindowManagerService.mAnimator.and then on * mLayoutToAnim */ final LayoutToAnimatorParams mLayoutToAnim = new LayoutToAnimatorParams(); /** The lowest wallpaper target with a detached wallpaper animation on it. */ WindowState mWindowDetachedWallpaper = null; Loading Loading @@ -3730,6 +3741,7 @@ public class WindowManagerService extends IWindowManager.Stub return ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; } @Override public Configuration updateOrientationFromAppTokens( Configuration currentConfig, IBinder freezeThisOneIfNeeded) { if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS, Loading Loading @@ -5796,7 +5808,7 @@ public class WindowManagerService extends IWindowManager.Stub if (mAnimator.mScreenRotationAnimation.setRotation(rotation, mFxSession, MAX_ANIMATION_DURATION, mTransitionAnimationScale, mCurDisplayWidth, mCurDisplayHeight)) { scheduleAnimationLocked(); updateLayoutToAnimationLocked(); } } Surface.setOrientation(0, rotation); Loading Loading @@ -7213,8 +7225,7 @@ public class WindowManagerService extends IWindowManager.Stub synchronized (mAnimator) { // Since we're holding both mWindowMap and mAnimator we don't need to // hold mAnimator.mLayoutToAnim. if (mAnimator.mAnimating || mAnimator.mLayoutToAnim.mAnimationScheduled) { if (mAnimator.mAnimating || mLayoutToAnim.mAnimationScheduled) { // If we are animating, don't do the gc now but // delay a bit so we don't interrupt the animation. mH.sendMessageDelayed(mH.obtainMessage(H.FORCE_GC), Loading Loading @@ -7332,10 +7343,11 @@ public class WindowManagerService extends IWindowManager.Stub case UPDATE_ANIM_PARAMETERS: { // Used to send multiple changes from the animation side to the layout side. synchronized (mWindowMap) { synchronized (mAnimToLayout) { mAnimToLayout.mUpdateQueued = false; final AnimatorToLayoutParams animToLayout = mAnimator.mAnimToLayout; synchronized (animToLayout) { animToLayout.mUpdateQueued = false; boolean doRequest = false; final int bulkUpdateParams = mAnimToLayout.mBulkUpdateParams; final int bulkUpdateParams = animToLayout.mBulkUpdateParams; // TODO(cmautner): As the number of bits grows, use masks of bit groups to // eliminate unnecessary tests. if ((bulkUpdateParams & LayoutFields.SET_UPDATE_ROTATION) != 0) { Loading @@ -7362,12 +7374,12 @@ public class WindowManagerService extends IWindowManager.Stub mTurnOnScreen = true; } mPendingLayoutChanges |= mAnimToLayout.mPendingLayoutChanges; mPendingLayoutChanges |= animToLayout.mPendingLayoutChanges; if (mPendingLayoutChanges != 0) { doRequest = true; } mWindowDetachedWallpaper = mAnimToLayout.mWindowDetachedWallpaper; mWindowDetachedWallpaper = animToLayout.mWindowDetachedWallpaper; if (doRequest) { mH.sendEmptyMessage(CLEAR_PENDING_ACTIONS); Loading Loading @@ -7812,7 +7824,7 @@ public class WindowManagerService extends IWindowManager.Stub } if (layerChanged && mAnimator.isDimming(winAnimator)) { // Force an animation pass just to update the mDimAnimator layer. scheduleAnimationLocked(); updateLayoutToAnimationLocked(); } if (DEBUG_LAYERS) Slog.v(TAG, "Assign layer " + w + ": " + winAnimator.mAnimLayer); Loading Loading @@ -9032,7 +9044,7 @@ public class WindowManagerService extends IWindowManager.Stub // be enabled, because the window obscured flags have changed. enableScreenIfNeededLocked(); scheduleAnimationLocked(); updateLayoutToAnimationLocked(); if (DEBUG_WINDOW_TRACE) { Slog.e(TAG, "performLayoutAndPlaceSurfacesLockedInner exit: mPendingLayoutChanges=" Loading Loading @@ -9109,8 +9121,18 @@ public class WindowManagerService extends IWindowManager.Stub } } /** Note that Locked in this case is on mLayoutToAnim */ void scheduleAnimationLocked() { final WindowAnimator.LayoutToAnimatorParams layoutToAnim = mAnimator.mLayoutToAnim; final LayoutToAnimatorParams layoutToAnim = mLayoutToAnim; if (!layoutToAnim.mAnimationScheduled) { layoutToAnim.mAnimationScheduled = true; mChoreographer.postCallback( Choreographer.CALLBACK_ANIMATION, mAnimator.mAnimationRunnable, null); } } void updateLayoutToAnimationLocked() { final LayoutToAnimatorParams layoutToAnim = mLayoutToAnim; synchronized (layoutToAnim) { // Copy local params to transfer params. ArrayList<WindowStateAnimator> winAnimators = layoutToAnim.mWinAnimators; Loading @@ -9123,7 +9145,7 @@ public class WindowManagerService extends IWindowManager.Stub } } layoutToAnim.mWallpaperTarget = mWallpaperTarget; mAnimator.scheduleAnimationLocked(); scheduleAnimationLocked(); } } Loading Loading @@ -9431,7 +9453,7 @@ public class WindowManagerService extends IWindowManager.Stub if (DEBUG_ORIENTATION) Slog.i(TAG, "**** Dismissing screen rotation animation"); if (mAnimator.mScreenRotationAnimation.dismiss(mFxSession, MAX_ANIMATION_DURATION, mTransitionAnimationScale, mCurDisplayWidth, mCurDisplayHeight)) { scheduleAnimationLocked(); updateLayoutToAnimationLocked(); } else { mAnimator.mScreenRotationAnimation.kill(); mAnimator.mScreenRotationAnimation = null; Loading Loading @@ -10209,12 +10231,4 @@ public class WindowManagerService extends IWindowManager.Stub Integer.toHexString(pendingLayoutChanges)); } } /** Locked on mAnimToLayout */ void setAnimatorParametersLocked() { if (!mAnimToLayout.mUpdateQueued) { mAnimToLayout.mUpdateQueued = true; mH.sendMessage(mH.obtainMessage(H.UPDATE_ANIM_PARAMETERS)); } } } services/java/com/android/server/wm/WindowState.java +2 −2 Original line number Diff line number Diff line Loading @@ -907,7 +907,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { mWinAnimator.applyAnimationLocked(WindowManagerPolicy.TRANSIT_ENTER, true); } if (requestAnim) { mService.scheduleAnimationLocked(); mService.updateLayoutToAnimationLocked(); } return true; } Loading Loading @@ -950,7 +950,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { } } if (requestAnim) { mService.scheduleAnimationLocked(); mService.updateLayoutToAnimationLocked(); } return true; } Loading services/java/com/android/server/wm/WindowStateAnimator.java +1 −1 Original line number Diff line number Diff line Loading @@ -1334,7 +1334,7 @@ class WindowStateAnimator { if (DEBUG_SURFACE_TRACE || DEBUG_ANIM) Slog.v(TAG, "performShowLocked: mDrawState=HAS_DRAWN in " + this); mDrawState = HAS_DRAWN; mService.scheduleAnimationLocked(); mService.updateLayoutToAnimationLocked(); int i = mWin.mChildWindows.size(); while (i > 0) { Loading Loading
services/java/com/android/server/wm/WindowAnimator.java +24 −33 Original line number Diff line number Diff line Loading @@ -10,17 +10,19 @@ import static com.android.server.wm.WindowManagerService.LayoutFields.SET_WALLPA import static com.android.server.wm.WindowManagerService.LayoutFields.SET_FORCE_HIDING_CHANGED; import static com.android.server.wm.WindowManagerService.H.SET_DIM_PARAMETERS; import static com.android.server.wm.WindowManagerService.H.UPDATE_ANIM_PARAMETERS; import android.content.Context; import android.os.SystemClock; import android.util.Log; import android.util.Slog; import android.view.Choreographer; import android.view.Surface; import android.view.WindowManagerPolicy; import android.view.animation.Animation; import com.android.internal.policy.impl.PhoneWindowManager; import com.android.server.wm.WindowManagerService.AnimatorToLayoutParams; import com.android.server.wm.WindowManagerService.LayoutToAnimatorParams; import java.io.PrintWriter; import java.util.ArrayList; Loading @@ -36,22 +38,10 @@ public class WindowAnimator { final Context mContext; final WindowManagerPolicy mPolicy; final Choreographer mChoreographer = Choreographer.getInstance(); ArrayList<WindowStateAnimator> mWinAnimators = new ArrayList<WindowStateAnimator>(); boolean mAnimating; static class LayoutToAnimatorParams { boolean mAnimationScheduled; ArrayList<WindowStateAnimator> mWinAnimators = new ArrayList<WindowStateAnimator>(); WindowState mWallpaperTarget; } /** Params from WindowManagerService. Do not modify or read without first locking on * either WindowManagerService.mWindowMap or WindowManagerService.mAnimator.and then on * mLayoutToAnim */ final LayoutToAnimatorParams mLayoutToAnim = new LayoutToAnimatorParams(); final Runnable mAnimationRunnable; int mAdjResult; Loading Loading @@ -95,6 +85,8 @@ public class WindowAnimator { WindowState mWallpaperTarget = null; final AnimatorToLayoutParams mAnimToLayout = new AnimatorToLayoutParams(); WindowAnimator(final WindowManagerService service, final Context context, final WindowManagerPolicy policy) { mService = service; Loading @@ -118,9 +110,24 @@ public class WindowAnimator { mWindowAnimationBackgroundSurface = new DimSurface(mService.mFxSession); } /** Locked on mAnimToLayout */ void updateAnimToLayoutLocked() { final AnimatorToLayoutParams animToLayout = mAnimToLayout; synchronized (animToLayout) { animToLayout.mBulkUpdateParams = mBulkUpdateParams; animToLayout.mPendingLayoutChanges = mPendingLayoutChanges; animToLayout.mWindowDetachedWallpaper = mWindowDetachedWallpaper; if (!animToLayout.mUpdateQueued) { animToLayout.mUpdateQueued = true; mService.mH.sendMessage(mService.mH.obtainMessage(UPDATE_ANIM_PARAMETERS)); } } } /** Copy all WindowManagerService params into local params here. Locked on 'this'. */ private void copyLayoutToAnimParamsLocked() { final LayoutToAnimatorParams layoutToAnim = mLayoutToAnim; final LayoutToAnimatorParams layoutToAnim = mService.mLayoutToAnim; synchronized(layoutToAnim) { layoutToAnim.mAnimationScheduled = false; Loading @@ -129,16 +136,6 @@ public class WindowAnimator { } } /** Note that Locked in this case is on mLayoutToAnim */ void scheduleAnimationLocked() { final LayoutToAnimatorParams layoutToAnim = mLayoutToAnim; if (!layoutToAnim.mAnimationScheduled) { layoutToAnim.mAnimationScheduled = true; mChoreographer.postCallback( Choreographer.CALLBACK_ANIMATION, mAnimationRunnable, null); } } void hideWallpapersLocked(final WindowState w) { if ((mService.mWallpaperTarget == w && mService.mLowerWallpaperTarget == null) || mService.mWallpaperTarget == null) { Loading Loading @@ -544,18 +541,12 @@ public class WindowAnimator { } if (mBulkUpdateParams != 0 || mPendingLayoutChanges != 0) { final WindowManagerService.AnimatorToLayoutParams animToLayout = mService.mAnimToLayout; synchronized (animToLayout) { animToLayout.mBulkUpdateParams = mBulkUpdateParams; animToLayout.mPendingLayoutChanges = mPendingLayoutChanges; animToLayout.mWindowDetachedWallpaper = mWindowDetachedWallpaper; mService.setAnimatorParametersLocked(); } updateAnimToLayoutLocked(); } if (mAnimating) { synchronized (mLayoutToAnim) { scheduleAnimationLocked(); synchronized (mService.mLayoutToAnim) { mService.scheduleAnimationLocked(); } } else if (wasAnimating) { mService.requestTraversalLocked(); Loading
services/java/com/android/server/wm/WindowManagerService.java +41 −27 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ import android.util.DisplayMetrics; import android.util.EventLog; import android.util.FloatMath; import android.util.Log; import android.util.LogPrinter; //import android.util.LogPrinter; import android.util.Pair; import android.util.Slog; import android.util.SparseIntArray; Loading Loading @@ -648,6 +648,7 @@ public class WindowManagerService extends IWindowManager.Stub } final LayoutFields mInnerFields = new LayoutFields(); // TODO: Move this into WindowAnimator. For some reason it causes the H class to blow up. /* Parameters being passed from mAnimator into this. * Do not modify unless holding (mWindowMap or mAnimator) and mAnimToLayout in that order */ static class AnimatorToLayoutParams { Loading @@ -656,7 +657,17 @@ public class WindowManagerService extends IWindowManager.Stub int mPendingLayoutChanges; WindowState mWindowDetachedWallpaper; } final AnimatorToLayoutParams mAnimToLayout = new AnimatorToLayoutParams(); static class LayoutToAnimatorParams { boolean mAnimationScheduled; ArrayList<WindowStateAnimator> mWinAnimators = new ArrayList<WindowStateAnimator>(); WindowState mWallpaperTarget; DimAnimator.Parameters mDimParams; } /** Params from WindowManagerService . Do not modify or read without first locking on * either WindowManagerService.mWindowMap or WindowManagerService.mAnimator.and then on * mLayoutToAnim */ final LayoutToAnimatorParams mLayoutToAnim = new LayoutToAnimatorParams(); /** The lowest wallpaper target with a detached wallpaper animation on it. */ WindowState mWindowDetachedWallpaper = null; Loading Loading @@ -3730,6 +3741,7 @@ public class WindowManagerService extends IWindowManager.Stub return ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; } @Override public Configuration updateOrientationFromAppTokens( Configuration currentConfig, IBinder freezeThisOneIfNeeded) { if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS, Loading Loading @@ -5796,7 +5808,7 @@ public class WindowManagerService extends IWindowManager.Stub if (mAnimator.mScreenRotationAnimation.setRotation(rotation, mFxSession, MAX_ANIMATION_DURATION, mTransitionAnimationScale, mCurDisplayWidth, mCurDisplayHeight)) { scheduleAnimationLocked(); updateLayoutToAnimationLocked(); } } Surface.setOrientation(0, rotation); Loading Loading @@ -7213,8 +7225,7 @@ public class WindowManagerService extends IWindowManager.Stub synchronized (mAnimator) { // Since we're holding both mWindowMap and mAnimator we don't need to // hold mAnimator.mLayoutToAnim. if (mAnimator.mAnimating || mAnimator.mLayoutToAnim.mAnimationScheduled) { if (mAnimator.mAnimating || mLayoutToAnim.mAnimationScheduled) { // If we are animating, don't do the gc now but // delay a bit so we don't interrupt the animation. mH.sendMessageDelayed(mH.obtainMessage(H.FORCE_GC), Loading Loading @@ -7332,10 +7343,11 @@ public class WindowManagerService extends IWindowManager.Stub case UPDATE_ANIM_PARAMETERS: { // Used to send multiple changes from the animation side to the layout side. synchronized (mWindowMap) { synchronized (mAnimToLayout) { mAnimToLayout.mUpdateQueued = false; final AnimatorToLayoutParams animToLayout = mAnimator.mAnimToLayout; synchronized (animToLayout) { animToLayout.mUpdateQueued = false; boolean doRequest = false; final int bulkUpdateParams = mAnimToLayout.mBulkUpdateParams; final int bulkUpdateParams = animToLayout.mBulkUpdateParams; // TODO(cmautner): As the number of bits grows, use masks of bit groups to // eliminate unnecessary tests. if ((bulkUpdateParams & LayoutFields.SET_UPDATE_ROTATION) != 0) { Loading @@ -7362,12 +7374,12 @@ public class WindowManagerService extends IWindowManager.Stub mTurnOnScreen = true; } mPendingLayoutChanges |= mAnimToLayout.mPendingLayoutChanges; mPendingLayoutChanges |= animToLayout.mPendingLayoutChanges; if (mPendingLayoutChanges != 0) { doRequest = true; } mWindowDetachedWallpaper = mAnimToLayout.mWindowDetachedWallpaper; mWindowDetachedWallpaper = animToLayout.mWindowDetachedWallpaper; if (doRequest) { mH.sendEmptyMessage(CLEAR_PENDING_ACTIONS); Loading Loading @@ -7812,7 +7824,7 @@ public class WindowManagerService extends IWindowManager.Stub } if (layerChanged && mAnimator.isDimming(winAnimator)) { // Force an animation pass just to update the mDimAnimator layer. scheduleAnimationLocked(); updateLayoutToAnimationLocked(); } if (DEBUG_LAYERS) Slog.v(TAG, "Assign layer " + w + ": " + winAnimator.mAnimLayer); Loading Loading @@ -9032,7 +9044,7 @@ public class WindowManagerService extends IWindowManager.Stub // be enabled, because the window obscured flags have changed. enableScreenIfNeededLocked(); scheduleAnimationLocked(); updateLayoutToAnimationLocked(); if (DEBUG_WINDOW_TRACE) { Slog.e(TAG, "performLayoutAndPlaceSurfacesLockedInner exit: mPendingLayoutChanges=" Loading Loading @@ -9109,8 +9121,18 @@ public class WindowManagerService extends IWindowManager.Stub } } /** Note that Locked in this case is on mLayoutToAnim */ void scheduleAnimationLocked() { final WindowAnimator.LayoutToAnimatorParams layoutToAnim = mAnimator.mLayoutToAnim; final LayoutToAnimatorParams layoutToAnim = mLayoutToAnim; if (!layoutToAnim.mAnimationScheduled) { layoutToAnim.mAnimationScheduled = true; mChoreographer.postCallback( Choreographer.CALLBACK_ANIMATION, mAnimator.mAnimationRunnable, null); } } void updateLayoutToAnimationLocked() { final LayoutToAnimatorParams layoutToAnim = mLayoutToAnim; synchronized (layoutToAnim) { // Copy local params to transfer params. ArrayList<WindowStateAnimator> winAnimators = layoutToAnim.mWinAnimators; Loading @@ -9123,7 +9145,7 @@ public class WindowManagerService extends IWindowManager.Stub } } layoutToAnim.mWallpaperTarget = mWallpaperTarget; mAnimator.scheduleAnimationLocked(); scheduleAnimationLocked(); } } Loading Loading @@ -9431,7 +9453,7 @@ public class WindowManagerService extends IWindowManager.Stub if (DEBUG_ORIENTATION) Slog.i(TAG, "**** Dismissing screen rotation animation"); if (mAnimator.mScreenRotationAnimation.dismiss(mFxSession, MAX_ANIMATION_DURATION, mTransitionAnimationScale, mCurDisplayWidth, mCurDisplayHeight)) { scheduleAnimationLocked(); updateLayoutToAnimationLocked(); } else { mAnimator.mScreenRotationAnimation.kill(); mAnimator.mScreenRotationAnimation = null; Loading Loading @@ -10209,12 +10231,4 @@ public class WindowManagerService extends IWindowManager.Stub Integer.toHexString(pendingLayoutChanges)); } } /** Locked on mAnimToLayout */ void setAnimatorParametersLocked() { if (!mAnimToLayout.mUpdateQueued) { mAnimToLayout.mUpdateQueued = true; mH.sendMessage(mH.obtainMessage(H.UPDATE_ANIM_PARAMETERS)); } } }
services/java/com/android/server/wm/WindowState.java +2 −2 Original line number Diff line number Diff line Loading @@ -907,7 +907,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { mWinAnimator.applyAnimationLocked(WindowManagerPolicy.TRANSIT_ENTER, true); } if (requestAnim) { mService.scheduleAnimationLocked(); mService.updateLayoutToAnimationLocked(); } return true; } Loading Loading @@ -950,7 +950,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { } } if (requestAnim) { mService.scheduleAnimationLocked(); mService.updateLayoutToAnimationLocked(); } return true; } Loading
services/java/com/android/server/wm/WindowStateAnimator.java +1 −1 Original line number Diff line number Diff line Loading @@ -1334,7 +1334,7 @@ class WindowStateAnimator { if (DEBUG_SURFACE_TRACE || DEBUG_ANIM) Slog.v(TAG, "performShowLocked: mDrawState=HAS_DRAWN in " + this); mDrawState = HAS_DRAWN; mService.scheduleAnimationLocked(); mService.updateLayoutToAnimationLocked(); int i = mWin.mChildWindows.size(); while (i > 0) { Loading