From e223e68d05228d2bb7abd2a20086abc4acdc1a60 Mon Sep 17 00:00:00 2001 From: Garfield Tan Date: Mon, 15 Apr 2019 09:59:25 -0700 Subject: [PATCH] Only reset layout seq when moved to a new display. In previous commit 2f145f225eeaa22fe6fbe739d33553b6ec50acf4 we consolidated display info change and moving to new display into one single method. Partner found that change may lead to timeout on turning on the screen (needs more than 1s to turn on screen). Thus restrict the layout sequence update to only moving to a new display, which is effectively the same to it before the consolidation in the previous commit. Bug: 128812757 Test: go/wm-smoke. Partner verified this fix too. atest WmTests:WindowStateTests Change-Id: Ifd5d8e98468f5fdb4bf9ec0de14766b58b36085e --- services/core/java/com/android/server/wm/WindowState.java | 2 +- .../wmtests/src/com/android/server/wm/WindowStateTests.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index d990e6c6c24b2..8e18683d3e762 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1305,7 +1305,7 @@ class WindowState extends WindowContainer implements WindowManagerP void onDisplayChanged(DisplayContent dc) { super.onDisplayChanged(dc); // Window was not laid out for this display yet, so make sure mLayoutSeq does not match. - if (dc != null) { + if (dc != null && mInputWindowHandle.displayId != dc.getDisplayId()) { mLayoutSeq = dc.mLayoutSeq - 1; mInputWindowHandle.displayId = dc.getDisplayId(); } diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java index 4f8fe5b10f19f..715353e5d9808 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java @@ -397,7 +397,9 @@ public class WindowStateTests extends WindowTestsBase { app.mLayoutSeq = 1; mDisplayContent.mLayoutSeq = 1; - app.onDisplayChanged(mDisplayContent); + DisplayContent newDisplay = createNewDisplay(); + + app.onDisplayChanged(newDisplay); assertThat(app.mLayoutSeq, not(is(mDisplayContent.mLayoutSeq))); }