Fix #2313887: Device doesn't boot after rebooting device...

...in setup wizard ->Wifi setup screen.

We were stopped waiting for the wallpaper to draw, which it would never do
because it had been obscured and thus hidden.

Change-Id: Ia48b3f2a46ca970f143cbaee99f5f2a054378986
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index cd74522..f05cdc4 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -4301,7 +4301,7 @@
             final int N = mWindows.size();
             for (int i=0; i<N; i++) {
                 WindowState w = (WindowState)mWindows.get(i);
-                if (w.isVisibleLw() && !w.isDrawnLw()) {
+                if (w.isVisibleLw() && !w.mObscured && !w.isDrawnLw()) {
                     return;
                 }
             }
@@ -7563,6 +7563,12 @@
             mHasTransformation = false;
             mHasLocalTransformation = false;
             mPolicyVisibility = mPolicyVisibilityAfterAnim;
+            if (!mPolicyVisibility) {
+                // Window is no longer visible -- make sure if we were waiting
+                // for it to be displayed before enabling the display, that
+                // we allow the display to be enabled now.
+                enableScreenIfNeededLocked();
+            }
             mTransformation.clear();
             if (mHasDrawn
                     && mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING
@@ -8020,6 +8026,10 @@
             } else {
                 mPolicyVisibilityAfterAnim = false;
                 mPolicyVisibility = false;
+                // Window is no longer visible -- make sure if we were waiting
+                // for it to be displayed before enabling the display, that
+                // we allow the display to be enabled now.
+                enableScreenIfNeededLocked();
             }
             if (requestAnim) {
                 requestAnimationLocked(0);
@@ -10353,6 +10363,10 @@
                     LocalPowerManager.BUTTON_EVENT, true);
             mTurnOnScreen = false;
         }
+        
+        // Check to see if we are now in a state where the screen should
+        // be enabled, because the window obscured flags have changed.
+        enableScreenIfNeededLocked();
     }
 
     void requestAnimationLocked(long delay) {