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

am: 997f2f71fa

Change-Id: I8b5fb57655afe1b9cab6afe3f5f34d48413af062
This commit is contained in:
Jorim Jaggi
2017-08-07 12:27:53 +00:00
committed by android-build-merger
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

@@ -1463,8 +1463,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;
}