From fa3515bd0d62bc55153f26cd9f0b93e077631514 Mon Sep 17 00:00:00 2001 From: Craig Mautner Date: Thu, 23 Oct 2014 13:16:53 -0700 Subject: [PATCH] Do not go through a layout if visibility is GONE An unnecessary layout based on dimensions changing catches up with us later when the next layout doesn't occur. In this case we layed out the Settings panel because visibility changed from visible to GONE and the requested width/height didn't match the current window width height. When the visibility changed back to visible the dimensions matched and another layout was not performed. This fix delays the layout until the window becomes visible again. Fixes bug 17681754. Change-Id: I0a3ff9479dca93e78c5d3a3df40faceffc10ecbd --- .../core/java/com/android/server/wm/WindowManagerService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index f82aee4d1e238..527ae47d439a1 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2980,8 +2980,8 @@ public class WindowManagerService extends IWindowManager.Stub return 0; } WindowStateAnimator winAnimator = win.mWinAnimator; - if (win.mRequestedWidth != requestedWidth - || win.mRequestedHeight != requestedHeight) { + if (viewVisibility != View.GONE && (win.mRequestedWidth != requestedWidth + || win.mRequestedHeight != requestedHeight)) { win.mLayoutNeeded = true; win.mRequestedWidth = requestedWidth; win.mRequestedHeight = requestedHeight;