From bc468d55218189329a379cd8348362dce6068775 Mon Sep 17 00:00:00 2001 From: Tony Huang Date: Fri, 15 May 2020 13:51:03 +0800 Subject: [PATCH] Only add divider when it need to show By previous memory patch, the divider will always call update when enter split when means it always add divider view when showing. So we can reduce some update call to avoid any unnecessary surface memory allocate. Fix: 150190730 Test: Check split mode rotate normally and dump SF to check divider memory status Test: Use forest to test cts/framework/gce-presubmit-wm-cloud-tf-3 Test: Use acloud to test cts/framework/gce-presubmit-wm-cloud-tf-3 Change-Id: I0aa4ad560eff6b64adc20cf2c04c3a61798c56ba --- .../com/android/systemui/stackdivider/Divider.java | 13 +++++-------- .../stackdivider/SplitScreenTaskOrganizer.java | 2 -- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java index 03a0d930a3d9a..c0bc28c206770 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java @@ -253,7 +253,9 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, mSplitLayout.mSecondary = new Rect(mRotateSplitLayout.mSecondary); mRotateSplitLayout = null; } - update(newConfig); + if (isSplitActive()) { + update(newConfig); + } } Handler getHandler() { @@ -328,11 +330,6 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, mHandler.post(this::removeDivider); } - void onTasksReady() { - mHandler.post(() -> update(mDisplayController.getDisplayContext( - mContext.getDisplayId()).getResources().getConfiguration())); - } - private void updateVisibility(final boolean visible) { if (DEBUG) Slog.d(TAG, "Updating visibility " + mVisible + "->" + visible); if (mVisible != visible) { @@ -524,7 +521,7 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, void ensureMinimizedSplit() { setHomeMinimized(true /* minimized */, mHomeStackResizable); - if (!isDividerVisible()) { + if (mView != null && !isDividerVisible()) { // Wasn't in split-mode yet, so enter now. if (DEBUG) { Slog.d(TAG, " entering split mode with minimized=true"); @@ -535,7 +532,7 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, void ensureNormalSplit() { setHomeMinimized(false /* minimized */, mHomeStackResizable); - if (!isDividerVisible()) { + if (mView != null && !isDividerVisible()) { // Wasn't in split-mode, so enter now. if (DEBUG) { Slog.d(TAG, " enter split mode unminimized "); diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/SplitScreenTaskOrganizer.java b/packages/SystemUI/src/com/android/systemui/stackdivider/SplitScreenTaskOrganizer.java index 6751e8d6223d3..4a2cad705c173 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/SplitScreenTaskOrganizer.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/SplitScreenTaskOrganizer.java @@ -113,8 +113,6 @@ class SplitScreenTaskOrganizer extends TaskOrganizer { t.setColor(mSecondaryDim, new float[]{0f, 0f, 0f}); t.apply(); releaseTransaction(t); - - mDivider.onTasksReady(); } } }