From 91bba497c314e4d717a94ea72c928a76a192b332 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 Change-Id: Ibccd0b998d299968ee6d68127c801fae656d2127 --- core/java/android/view/WindowlessWindowManager.java | 1 - .../src/com/android/systemui/stackdivider/Divider.java | 10 ++++------ .../stackdivider/SplitScreenTaskOrganizer.java | 2 -- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java index d20ffb3a6ec11..571a9dd899430 100644 --- a/core/java/android/view/WindowlessWindowManager.java +++ b/core/java/android/view/WindowlessWindowManager.java @@ -41,7 +41,6 @@ public class WindowlessWindowManager implements IWindowSession { private final static String TAG = "WindowlessWindowManager"; private class State { - //TODO : b/150190730 we should create it when view show and release it when view invisible. SurfaceControl mSurfaceControl; WindowManager.LayoutParams mParams = new WindowManager.LayoutParams(); int mDisplayId; diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java index 95aceed1126b9..5bc295bcd136f 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java @@ -238,7 +238,10 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, mSplitLayout.mSecondary = new Rect(mRotateSplitLayout.mSecondary); mRotateSplitLayout = null; } - update(newConfig); + + if (isSplitActive()) { + update(newConfig); + } } Handler getHandler() { @@ -313,11 +316,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) { diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/SplitScreenTaskOrganizer.java b/packages/SystemUI/src/com/android/systemui/stackdivider/SplitScreenTaskOrganizer.java index c496d22802223..5ff1f3ab14222 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(); } } }