Fix a few issues with occluded Keyguard

- When we get a collapse before the layout happened in SystemUI,
don't expand the panel after the layout.
- Don't reset waitingToShow when coming out of sleep. This will cause
win.isVisibleOrBehindKeyguardLw to return false and then occluded
state will change rapidly from true -> false -> true, leading to
flickering in SysUI.

Bug: 23898941
Change-Id: I2b941188de777086bb2b477f5bfc00cc0cd6abe0
This commit is contained in:
Jorim Jaggi
2016-04-25 18:51:16 -07:00
parent 72c216f250
commit c5804afa73
2 changed files with 13 additions and 1 deletions

View File

@@ -883,6 +883,10 @@ public abstract class PanelView extends FrameLayout {
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (!mInstantExpanding) {
getViewTreeObserver().removeOnGlobalLayoutListener(this);
return;
}
if (mStatusBar.getStatusBarWindow().getHeight()
!= mStatusBar.getStatusBarHeight()) {
getViewTreeObserver().removeOnGlobalLayoutListener(this);
@@ -907,6 +911,10 @@ public abstract class PanelView extends FrameLayout {
if (mExpanding) {
notifyExpandingFinished();
}
if (mInstantExpanding) {
mInstantExpanding = false;
notifyBarPanelExpansionChanged();
}
}
private void abortAnimations() {

View File

@@ -4409,7 +4409,11 @@ public class WindowManagerService extends IWindowManager.Stub
if (wtoken.hidden || wtoken.mAppStopped) {
wtoken.allDrawn = false;
wtoken.deferClearAllDrawn = false;
wtoken.waitingToShow = true;
// If the app was already visible, don't reset the waitingToShow state.
if (wtoken.hidden) {
wtoken.waitingToShow = true;
}
if (wtoken.clientHidden) {
// In the case where we are making an app visible