From 3a0469d1e40459529e2d4d57ebc493f930f7c01a Mon Sep 17 00:00:00 2001 From: Michael Jurka Date: Thu, 21 Jun 2012 09:38:41 -0700 Subject: [PATCH] Remove use of private api ViewGroup.setChildrenLayersEnabled Change-Id: I877bd84c6846ae232e2877e97de95d9344c13e56 --- src/com/android/launcher2/PagedView.java | 9 ------ src/com/android/launcher2/Workspace.java | 48 ++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 30 deletions(-) diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java index 8ceac8fe7..4765dae02 100644 --- a/src/com/android/launcher2/PagedView.java +++ b/src/com/android/launcher2/PagedView.java @@ -790,20 +790,11 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc canvas.clipRect(getScrollX(), getScrollY(), getScrollX() + getRight() - getLeft(), getScrollY() + getBottom() - getTop()); - // On certain graphics drivers, if you draw to a off-screen buffer that's not - // used, it can lead to poor performance. We were running into this when - // setChildrenLayersEnabled was called on a CellLayout; that triggered a re-draw - // of that CellLayout's hardware layer, even if that CellLayout wasn't visible. - // As a fix, below we set pages that aren't going to be rendered are to be - // View.INVISIBLE, preventing re-drawing of their hardware layer for (int i = getChildCount() - 1; i >= 0; i--) { final View v = getPageAt(i); if (mForceDrawAllChildrenNextFrame || (leftScreen <= i && i <= rightScreen && shouldDrawChild(v))) { - v.setVisibility(VISIBLE); drawChild(canvas, v, drawingTime); - } else { - v.setVisibility(INVISIBLE); } } mForceDrawAllChildrenNextFrame = false; diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index 4e0c3472d..66facf422 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -366,19 +366,9 @@ public class Workspace extends SmoothPagedView return r; } - public void buildPageHardwareLayers() { - if (getWindowToken() != null) { - final int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - CellLayout cl = (CellLayout) getChildAt(i); - cl.getShortcutsAndWidgets().buildLayer(); - } - } - } - public void onDragStart(DragSource source, Object info, int dragAction) { mIsDragOccuring = true; - updateChildrenLayersEnabled(); + updateChildrenLayersEnabled(false); mLauncher.lockScreenOrientation(); setChildrenBackgroundAlphaMultipliers(1f); // Prevent any Un/InstallShortcutReceivers from updating the db while we are dragging @@ -388,7 +378,7 @@ public class Workspace extends SmoothPagedView public void onDragEnd() { mIsDragOccuring = false; - updateChildrenLayersEnabled(); + updateChildrenLayersEnabled(false); mLauncher.unlockScreenOrientation(false); // Re-enable any Un/InstallShortcutReceiver and now process any queued items @@ -730,7 +720,7 @@ public class Workspace extends SmoothPagedView super.onPageBeginMoving(); if (isHardwareAccelerated()) { - updateChildrenLayersEnabled(); + updateChildrenLayersEnabled(false); } else { if (mNextPage != INVALID_PAGE) { // we're snapping to a particular screen @@ -764,7 +754,7 @@ public class Workspace extends SmoothPagedView super.onPageEndMoving(); if (isHardwareAccelerated()) { - updateChildrenLayersEnabled(); + updateChildrenLayersEnabled(false); } else { clearChildrenCache(); } @@ -1370,16 +1360,32 @@ public class Workspace extends SmoothPagedView } } - private void updateChildrenLayersEnabled() { + + private void updateChildrenLayersEnabled(boolean force) { boolean small = mState == State.SMALL || mIsSwitchingState; - boolean enableChildrenLayers = small || mAnimatingViewIntoPlace || isPageMoving(); + boolean enableChildrenLayers = force || small || mAnimatingViewIntoPlace || isPageMoving(); if (enableChildrenLayers != mChildrenLayersEnabled) { mChildrenLayersEnabled = enableChildrenLayers; for (int i = 0; i < getPageCount(); i++) { - ((ViewGroup)getChildAt(i)).setChildrenLayersEnabled(mChildrenLayersEnabled); + CellLayout cl = (CellLayout) getChildAt(i); + cl.getShortcutsAndWidgets().setLayerType( + mChildrenLayersEnabled ? LAYER_TYPE_HARDWARE : LAYER_TYPE_NONE, null); + } + } + } + + public void buildPageHardwareLayers() { + // force layers to be enabled just for the call to buildLayer + updateChildrenLayersEnabled(true); + if (getWindowToken() != null) { + final int childCount = getChildCount(); + for (int i = 0; i < childCount; i++) { + CellLayout cl = (CellLayout) getChildAt(i); + cl.getShortcutsAndWidgets().buildLayer(); } } + updateChildrenLayersEnabled(false); } protected void onWallpaperTap(MotionEvent ev) { @@ -1540,7 +1546,7 @@ public class Workspace extends SmoothPagedView if (oldStateIsNormal && stateIsSmall) { zoomIn = false; setLayoutScale(finalScaleFactor); - updateChildrenLayersEnabled(); + updateChildrenLayersEnabled(false); } else { finalBackgroundAlpha = 1.0f; setLayoutScale(finalScaleFactor); @@ -1680,7 +1686,7 @@ public class Workspace extends SmoothPagedView public void onLauncherTransitionEnd(Launcher l, boolean animated, boolean toWorkspace) { mIsSwitchingState = false; mWallpaperOffset.setOverrideHorizontalCatchupConstant(false); - updateChildrenLayersEnabled(); + updateChildrenLayersEnabled(false); // The code in getChangeStateAnimation to determine initialAlpha and finalAlpha will ensure // ensure that only the current page is visible during (and subsequently, after) the // transition animation. If fade adjacent pages is disabled, then re-enable the page @@ -2262,7 +2268,7 @@ public class Workspace extends SmoothPagedView @Override public void run() { mAnimatingViewIntoPlace = false; - updateChildrenLayersEnabled(); + updateChildrenLayersEnabled(false); if (finalResizeRunnable != null) { finalResizeRunnable.run(); } @@ -3291,7 +3297,7 @@ public class Workspace extends SmoothPagedView // hardware layers on children are enabled on startup, but should be disabled until // needed - updateChildrenLayersEnabled(); + updateChildrenLayersEnabled(false); setWallpaperDimension(); } -- 2.11.0