Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76d2fe42 authored by Adrian Roos's avatar Adrian Roos
Browse files

Fix black keyguard / missing status bar

The status bar window was stuck in the READY_TO_SHOW state
because it was not policy visible, whereas the policy
was waiting for the window to become HAS_DRAWN.

Now BarController also updates states if the window
is READY_TO_SHOW, which in turn allows the window to
become visible and HAS_DRAWN.

Bug: 22072099
Change-Id: I1836c276723ee2205d7d5759be079f02aaa23e2e
parent 8f596907
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -341,6 +341,14 @@ public interface WindowManagerPolicy {
         */
        boolean isGoneForLayoutLw();

        /**
         * Returns true if the window has a surface that it has drawn a
         * complete UI in to. Note that this is different from {@link #hasDrawnLw()}
         * in that it also returns true if the window is READY_TO_SHOW, but was not yet
         * promoted to HAS_DRAWN.
         */
        boolean isDrawnLw();

        /**
         * Returns true if this window has been shown on screen at some time in 
         * the past.  Must be called with the window manager lock held.
+2 −2
Original line number Diff line number Diff line
@@ -155,7 +155,7 @@ public class BarController {
    }

    private int computeStateLw(boolean wasVis, boolean wasAnim, WindowState win, boolean change) {
        if (win.hasDrawnLw()) {
        if (win.isDrawnLw()) {
            final boolean vis = win.isVisibleLw();
            final boolean anim = win.isAnimatingLw();
            if (mState == StatusBarManager.WINDOW_STATE_HIDING && !change && !vis) {
@@ -198,7 +198,7 @@ public class BarController {
    }

    public boolean checkHiddenLw() {
        if (mWin != null && mWin.hasDrawnLw()) {
        if (mWin != null && mWin.isDrawnLw()) {
            if (!mWin.isVisibleLw() && !mWin.isAnimatingLw()) {
                updateStateLw(StatusBarManager.WINDOW_STATE_HIDDEN);
            }
+1 −0
Original line number Diff line number Diff line
@@ -1104,6 +1104,7 @@ final class WindowState implements WindowManagerPolicy.WindowState {
     * Returns true if the window has a surface that it has drawn a
     * complete UI in to.
     */
    @Override
    public boolean isDrawnLw() {
        return mHasSurface && !mDestroying &&
                (mWinAnimator.mDrawState == WindowStateAnimator.READY_TO_SHOW