Merge "Fix light bar flickers" into oc-dr1-dev

This commit is contained in:
Jorim Jaggi
2017-08-07 12:17:35 +00:00
committed by Android (Google) Code Review
2 changed files with 20 additions and 2 deletions

View File

@@ -198,6 +198,14 @@ public class AppWindowAnimator {
return animation != null || mAppToken.inPendingTransaction;
}
/**
* @return whether an animation is about to start, i.e. the animation is set already but we
* haven't processed the first frame yet.
*/
boolean isAnimationStarting() {
return animation != null && !animating;
}
public int getTransit() {
return mTransit;
}

View File

@@ -1458,8 +1458,18 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
@Override
public boolean canAffectSystemUiFlags() {
final boolean shown = mWinAnimator.getShown();
final boolean exiting = mAnimatingExit || mDestroying
|| mAppToken != null && mAppToken.hidden;
// We only consider the app to be exiting when the animation has started. After the app
// transition is executed the windows are marked exiting before the new windows have been
// shown. Thus, wait considering a window to be exiting after the animation has actually
// started.
final boolean appAnimationStarting = mAppToken != null
&& mAppToken.mAppAnimator.isAnimationStarting();
final boolean exitingSelf = mAnimatingExit && (!mWinAnimator.isAnimationStarting()
&& !appAnimationStarting);
final boolean appExiting = mAppToken != null && mAppToken.hidden && !appAnimationStarting;
final boolean exiting = exitingSelf || mDestroying || appExiting;
final boolean translucent = mAttrs.alpha == 0.0f;
return shown && !exiting && !translucent;
}