From a72b4cc3734dfbb36289bfda019c99ee82835566 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Tue, 16 Apr 2019 15:38:49 +0200 Subject: [PATCH] Copy rects such that we don't modify state Test: PopupWindowTest Bug: 130553898 Bug: 130231322 Change-Id: I8abe25d054b34f1bf1234e1328b32aefc2020cf6 --- services/core/java/com/android/server/wm/DisplayPolicy.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 533705032b58d..bd874ba786ed6 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -1726,14 +1726,16 @@ public class DisplayPolicy { // In case we forced the window to draw behind the navigation bar, restrict df/of to // DF.RestrictedOverscan to simulate old compat behavior. - final Rect parentDisplayFrame = attached.getDisplayFrameLw(); - final Rect parentOverscan = attached.getOverscanFrameLw(); + Rect parentDisplayFrame = attached.getDisplayFrameLw(); + Rect parentOverscan = attached.getOverscanFrameLw(); final WindowManager.LayoutParams attachedAttrs = attached.mAttrs; if ((attachedAttrs.privateFlags & PRIVATE_FLAG_FORCE_DRAW_BAR_BACKGROUNDS) != 0 && (attachedAttrs.flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) == 0 && (attachedAttrs.systemUiVisibility & SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) == 0) { + parentOverscan = new Rect(parentOverscan); parentOverscan.intersect(displayFrames.mRestrictedOverscan); + parentDisplayFrame = new Rect(parentDisplayFrame); parentDisplayFrame.intersect(displayFrames.mRestrictedOverscan); }