From f3b99eee95a41e1da05745998a6af9a2224b73ed Mon Sep 17 00:00:00 2001 From: Tiger Huang Date: Thu, 15 Sep 2022 15:02:40 +0800 Subject: [PATCH] Don't perform config change if relayoutAsync mPendingMergedConfiguration wouldn't be updated if we didn't call IWindowSession#relayout. Bug: 244003094 Test: atest ToggleDarkThemeMicrobenchmark#testToggle Change-Id: Ibc2f40dd986136d9b54f3a7f491f7517489e05af --- core/java/android/view/ViewRootImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 108d177d566d8..e4caa385bc9b5 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -3064,7 +3064,8 @@ public final class ViewRootImpl implements ViewParent, // WindowManagerService has reported back a frame from a configuration not yet // handled by the client. In this case, we need to accept the configuration so we // do not lay out and draw with the wrong configuration. - if (!mPendingMergedConfiguration.equals(mLastReportedMergedConfiguration)) { + if (mRelayoutRequested + && !mPendingMergedConfiguration.equals(mLastReportedMergedConfiguration)) { if (DEBUG_CONFIGURATION) Log.v(mTag, "Visible with new config: " + mPendingMergedConfiguration.getMergedConfiguration()); performConfigurationChange(new MergedConfiguration(mPendingMergedConfiguration),