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:
@@ -883,6 +883,10 @@ public abstract class PanelView extends FrameLayout {
|
|||||||
new ViewTreeObserver.OnGlobalLayoutListener() {
|
new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onGlobalLayout() {
|
public void onGlobalLayout() {
|
||||||
|
if (!mInstantExpanding) {
|
||||||
|
getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (mStatusBar.getStatusBarWindow().getHeight()
|
if (mStatusBar.getStatusBarWindow().getHeight()
|
||||||
!= mStatusBar.getStatusBarHeight()) {
|
!= mStatusBar.getStatusBarHeight()) {
|
||||||
getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||||
@@ -907,6 +911,10 @@ public abstract class PanelView extends FrameLayout {
|
|||||||
if (mExpanding) {
|
if (mExpanding) {
|
||||||
notifyExpandingFinished();
|
notifyExpandingFinished();
|
||||||
}
|
}
|
||||||
|
if (mInstantExpanding) {
|
||||||
|
mInstantExpanding = false;
|
||||||
|
notifyBarPanelExpansionChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void abortAnimations() {
|
private void abortAnimations() {
|
||||||
|
|||||||
@@ -4409,7 +4409,11 @@ public class WindowManagerService extends IWindowManager.Stub
|
|||||||
if (wtoken.hidden || wtoken.mAppStopped) {
|
if (wtoken.hidden || wtoken.mAppStopped) {
|
||||||
wtoken.allDrawn = false;
|
wtoken.allDrawn = false;
|
||||||
wtoken.deferClearAllDrawn = 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) {
|
if (wtoken.clientHidden) {
|
||||||
// In the case where we are making an app visible
|
// In the case where we are making an app visible
|
||||||
|
|||||||
Reference in New Issue
Block a user