Loading services/java/com/android/server/WindowManagerService.java +40 −14 Original line number Diff line number Diff line Loading @@ -380,6 +380,9 @@ public class WindowManagerService extends IWindowManager.Stub int mLayoutSeq = 0; // State while inside of layoutAndPlaceSurfacesLocked(). boolean mFocusMayChange; Configuration mCurConfiguration = new Configuration(); // This is held as long as we have the screen frozen, to give us time to Loading Loading @@ -2370,6 +2373,8 @@ public class WindowManagerService extends IWindowManager.Stub } if (displayed && (win.mAttrs.flags & WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON) != 0) { if (DEBUG_VISIBILITY) Slog.v(TAG, "Relayout window turning screen on: " + win); win.mTurnOnScreen = true; } if ((attrChanges&WindowManager.LayoutParams.FORMAT_CHANGED) != 0) { Loading Loading @@ -3218,7 +3223,7 @@ public class WindowManagerService extends IWindowManager.Stub if (DEBUG_APP_TRANSITIONS) Slog.v( TAG, "Prepare app transition: transit=" + transit + " mNextAppTransition=" + mNextAppTransition); if (!mDisplayFrozen) { if (!mDisplayFrozen && mPolicy.isScreenOn()) { if (mNextAppTransition == WindowManagerPolicy.TRANSIT_UNSET || mNextAppTransition == WindowManagerPolicy.TRANSIT_NONE) { mNextAppTransition = transit; Loading Loading @@ -3574,7 +3579,8 @@ public class WindowManagerService extends IWindowManager.Stub // If we are preparing an app transition, then delay changing // the visibility of this token until we execute that transition. if (!mDisplayFrozen && mNextAppTransition != WindowManagerPolicy.TRANSIT_UNSET) { if (!mDisplayFrozen && mPolicy.isScreenOn() && mNextAppTransition != WindowManagerPolicy.TRANSIT_UNSET) { // Already in requested state, don't do anything more. if (wtoken.hiddenRequested != visible) { return; Loading Loading @@ -3697,7 +3703,7 @@ public class WindowManagerService extends IWindowManager.Stub } synchronized(mWindowMap) { if (configChanges == 0 && !mDisplayFrozen) { if (configChanges == 0 && !mDisplayFrozen && mPolicy.isScreenOn()) { if (DEBUG_ORIENTATION) Slog.v(TAG, "Skipping set freeze of " + token); return; } Loading Loading @@ -7597,13 +7603,22 @@ public class WindowManagerService extends IWindowManager.Stub + " anim layer: " + mAnimLayer); mHasTransformation = false; mHasLocalTransformation = false; if (mPolicyVisibility != mPolicyVisibilityAfterAnim) { if (DEBUG_VISIBILITY) { Slog.v(TAG, "Policy visibility changing after anim in " + this + ": " + mPolicyVisibilityAfterAnim); } mPolicyVisibility = mPolicyVisibilityAfterAnim; if (!mPolicyVisibility) { if (mCurrentFocus == this) { mFocusMayChange = true; } // 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 Loading Loading @@ -8029,6 +8044,7 @@ public class WindowManagerService extends IWindowManager.Stub if (mPolicyVisibility && mPolicyVisibilityAfterAnim) { return false; } if (DEBUG_VISIBILITY) Slog.v(TAG, "Policy visibility true: " + this); mPolicyVisibility = true; mPolicyVisibilityAfterAnim = true; if (doAnimation) { Loading Loading @@ -8059,6 +8075,7 @@ public class WindowManagerService extends IWindowManager.Stub if (doAnimation) { mPolicyVisibilityAfterAnim = false; } else { if (DEBUG_VISIBILITY) Slog.v(TAG, "Policy visibility false: " + this); mPolicyVisibilityAfterAnim = false; mPolicyVisibility = false; // Window is no longer visible -- make sure if we were waiting Loading Loading @@ -9401,6 +9418,11 @@ public class WindowManagerService extends IWindowManager.Stub int i; if (mFocusMayChange) { mFocusMayChange = false; updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES); } // FIRST LOOP: Perform a layout, if needed. performLayoutLockedInner(); Loading Loading @@ -9462,7 +9484,6 @@ public class WindowManagerService extends IWindowManager.Stub boolean tokenMayBeDrawn = false; boolean wallpaperMayChange = false; boolean focusMayChange = false; mPolicy.beginAnimationLw(dw, dh); Loading Loading @@ -9496,7 +9517,7 @@ public class WindowManagerService extends IWindowManager.Stub if (mPolicy.doesForceHide(w, attrs)) { if (!wasAnimating && animating) { wallpaperForceHidingChanged = true; focusMayChange = true; mFocusMayChange = true; } else if (w.isReadyForDisplay() && w.mAnimation == null) { forceHiding = true; } Loading @@ -9516,6 +9537,7 @@ public class WindowManagerService extends IWindowManager.Stub if (a != null) { w.setAnimation(a); } mFocusMayChange = true; } } if (changed && (attrs.flags Loading Loading @@ -9825,7 +9847,7 @@ public class WindowManagerService extends IWindowManager.Stub } performLayoutLockedInner(); updateFocusedWindowLocked(UPDATE_FOCUS_PLACING_SURFACES); focusMayChange = false; mFocusMayChange = false; restart = true; } Loading @@ -9850,7 +9872,7 @@ public class WindowManagerService extends IWindowManager.Stub // Since the window list has been rebuilt, focus might // have to be recomputed since the actual order of windows // might have changed again. focusMayChange = true; mFocusMayChange = true; } int adjResult = 0; Loading Loading @@ -9927,7 +9949,8 @@ public class WindowManagerService extends IWindowManager.Stub mLayoutNeeded = true; } if (focusMayChange) { if (mFocusMayChange) { mFocusMayChange = false; if (updateFocusedWindowLocked(UPDATE_FOCUS_PLACING_SURFACES)) { restart = true; adjResult = 0; Loading Loading @@ -10500,6 +10523,7 @@ public class WindowManagerService extends IWindowManager.Stub } if (mTurnOnScreen) { if (DEBUG_VISIBILITY) Slog.v(TAG, "Turning screen on after layout!"); mPowerManager.userActivity(SystemClock.uptimeMillis(), false, LocalPowerManager.BUTTON_EVENT, true); mTurnOnScreen = false; Loading Loading @@ -10530,6 +10554,8 @@ public class WindowManagerService extends IWindowManager.Stub if (win.mSurface != null) { win.mSurface.show(); if (win.mTurnOnScreen) { if (DEBUG_VISIBILITY) Slog.v(TAG, "Show surface turning screen on: " + win); win.mTurnOnScreen = false; mTurnOnScreen = true; } Loading Loading
services/java/com/android/server/WindowManagerService.java +40 −14 Original line number Diff line number Diff line Loading @@ -380,6 +380,9 @@ public class WindowManagerService extends IWindowManager.Stub int mLayoutSeq = 0; // State while inside of layoutAndPlaceSurfacesLocked(). boolean mFocusMayChange; Configuration mCurConfiguration = new Configuration(); // This is held as long as we have the screen frozen, to give us time to Loading Loading @@ -2370,6 +2373,8 @@ public class WindowManagerService extends IWindowManager.Stub } if (displayed && (win.mAttrs.flags & WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON) != 0) { if (DEBUG_VISIBILITY) Slog.v(TAG, "Relayout window turning screen on: " + win); win.mTurnOnScreen = true; } if ((attrChanges&WindowManager.LayoutParams.FORMAT_CHANGED) != 0) { Loading Loading @@ -3218,7 +3223,7 @@ public class WindowManagerService extends IWindowManager.Stub if (DEBUG_APP_TRANSITIONS) Slog.v( TAG, "Prepare app transition: transit=" + transit + " mNextAppTransition=" + mNextAppTransition); if (!mDisplayFrozen) { if (!mDisplayFrozen && mPolicy.isScreenOn()) { if (mNextAppTransition == WindowManagerPolicy.TRANSIT_UNSET || mNextAppTransition == WindowManagerPolicy.TRANSIT_NONE) { mNextAppTransition = transit; Loading Loading @@ -3574,7 +3579,8 @@ public class WindowManagerService extends IWindowManager.Stub // If we are preparing an app transition, then delay changing // the visibility of this token until we execute that transition. if (!mDisplayFrozen && mNextAppTransition != WindowManagerPolicy.TRANSIT_UNSET) { if (!mDisplayFrozen && mPolicy.isScreenOn() && mNextAppTransition != WindowManagerPolicy.TRANSIT_UNSET) { // Already in requested state, don't do anything more. if (wtoken.hiddenRequested != visible) { return; Loading Loading @@ -3697,7 +3703,7 @@ public class WindowManagerService extends IWindowManager.Stub } synchronized(mWindowMap) { if (configChanges == 0 && !mDisplayFrozen) { if (configChanges == 0 && !mDisplayFrozen && mPolicy.isScreenOn()) { if (DEBUG_ORIENTATION) Slog.v(TAG, "Skipping set freeze of " + token); return; } Loading Loading @@ -7597,13 +7603,22 @@ public class WindowManagerService extends IWindowManager.Stub + " anim layer: " + mAnimLayer); mHasTransformation = false; mHasLocalTransformation = false; if (mPolicyVisibility != mPolicyVisibilityAfterAnim) { if (DEBUG_VISIBILITY) { Slog.v(TAG, "Policy visibility changing after anim in " + this + ": " + mPolicyVisibilityAfterAnim); } mPolicyVisibility = mPolicyVisibilityAfterAnim; if (!mPolicyVisibility) { if (mCurrentFocus == this) { mFocusMayChange = true; } // 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 Loading Loading @@ -8029,6 +8044,7 @@ public class WindowManagerService extends IWindowManager.Stub if (mPolicyVisibility && mPolicyVisibilityAfterAnim) { return false; } if (DEBUG_VISIBILITY) Slog.v(TAG, "Policy visibility true: " + this); mPolicyVisibility = true; mPolicyVisibilityAfterAnim = true; if (doAnimation) { Loading Loading @@ -8059,6 +8075,7 @@ public class WindowManagerService extends IWindowManager.Stub if (doAnimation) { mPolicyVisibilityAfterAnim = false; } else { if (DEBUG_VISIBILITY) Slog.v(TAG, "Policy visibility false: " + this); mPolicyVisibilityAfterAnim = false; mPolicyVisibility = false; // Window is no longer visible -- make sure if we were waiting Loading Loading @@ -9401,6 +9418,11 @@ public class WindowManagerService extends IWindowManager.Stub int i; if (mFocusMayChange) { mFocusMayChange = false; updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES); } // FIRST LOOP: Perform a layout, if needed. performLayoutLockedInner(); Loading Loading @@ -9462,7 +9484,6 @@ public class WindowManagerService extends IWindowManager.Stub boolean tokenMayBeDrawn = false; boolean wallpaperMayChange = false; boolean focusMayChange = false; mPolicy.beginAnimationLw(dw, dh); Loading Loading @@ -9496,7 +9517,7 @@ public class WindowManagerService extends IWindowManager.Stub if (mPolicy.doesForceHide(w, attrs)) { if (!wasAnimating && animating) { wallpaperForceHidingChanged = true; focusMayChange = true; mFocusMayChange = true; } else if (w.isReadyForDisplay() && w.mAnimation == null) { forceHiding = true; } Loading @@ -9516,6 +9537,7 @@ public class WindowManagerService extends IWindowManager.Stub if (a != null) { w.setAnimation(a); } mFocusMayChange = true; } } if (changed && (attrs.flags Loading Loading @@ -9825,7 +9847,7 @@ public class WindowManagerService extends IWindowManager.Stub } performLayoutLockedInner(); updateFocusedWindowLocked(UPDATE_FOCUS_PLACING_SURFACES); focusMayChange = false; mFocusMayChange = false; restart = true; } Loading @@ -9850,7 +9872,7 @@ public class WindowManagerService extends IWindowManager.Stub // Since the window list has been rebuilt, focus might // have to be recomputed since the actual order of windows // might have changed again. focusMayChange = true; mFocusMayChange = true; } int adjResult = 0; Loading Loading @@ -9927,7 +9949,8 @@ public class WindowManagerService extends IWindowManager.Stub mLayoutNeeded = true; } if (focusMayChange) { if (mFocusMayChange) { mFocusMayChange = false; if (updateFocusedWindowLocked(UPDATE_FOCUS_PLACING_SURFACES)) { restart = true; adjResult = 0; Loading Loading @@ -10500,6 +10523,7 @@ public class WindowManagerService extends IWindowManager.Stub } if (mTurnOnScreen) { if (DEBUG_VISIBILITY) Slog.v(TAG, "Turning screen on after layout!"); mPowerManager.userActivity(SystemClock.uptimeMillis(), false, LocalPowerManager.BUTTON_EVENT, true); mTurnOnScreen = false; Loading Loading @@ -10530,6 +10554,8 @@ public class WindowManagerService extends IWindowManager.Stub if (win.mSurface != null) { win.mSurface.show(); if (win.mTurnOnScreen) { if (DEBUG_VISIBILITY) Slog.v(TAG, "Show surface turning screen on: " + win); win.mTurnOnScreen = false; mTurnOnScreen = true; } Loading