Fix delayed light status bar animation

Make sure to do another layout when we show the dim layer so PWM
can pick up the change and send it to SysUI.

Bug: 28434629
Change-Id: I877669ede8534601933043f60c8cef8502918c7b
This commit is contained in:
Jorim Jaggi
2016-05-05 16:25:43 -07:00
parent c27660d45a
commit 72a6f058cf
2 changed files with 9 additions and 1 deletions

View File

@@ -5004,7 +5004,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// Keep track of the window if it's dimming but not necessarily fullscreen.
final boolean reallyVisible = win.isVisibleOrBehindKeyguardLw() && !win.isGoneForLayoutLw();
if (mTopFullscreenOpaqueOrDimmingWindowState == null && reallyVisible
if (mTopFullscreenOpaqueOrDimmingWindowState == null && reallyVisible
&& win.isDimming() && StackId.normallyFullscreenWindows(stackId)) {
mTopFullscreenOpaqueOrDimmingWindowState = win;
}

View File

@@ -1,5 +1,6 @@
package com.android.server.wm;
import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_DIM_LAYER;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
@@ -250,6 +251,13 @@ class DimLayerController {
duration = getDimLayerFadeDuration(duration);
}
state.dimLayer.show(dimLayer, dimAmount, duration);
// If we showed a dim layer, make sure to redo the layout because some things depend
// on whether a dim layer is showing or not.
if (targetAlpha == 0) {
mDisplayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_LAYOUT;
mDisplayContent.layoutNeeded = true;
}
}
} else if (state.dimLayer.getLayer() != dimLayer) {
state.dimLayer.setLayer(dimLayer);