diff options
Diffstat (limited to 'src/com/android/launcher2/Workspace.java')
-rw-r--r-- | src/com/android/launcher2/Workspace.java | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index d3a31c49b..af663cd1b 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -1241,6 +1241,19 @@ public class Workspace extends SmoothPagedView @Override protected void dispatchDraw(Canvas canvas) { + if (mChildrenLayersEnabled) { + getVisiblePages(mTempVisiblePagesRange); + final int leftScreen = mTempVisiblePagesRange[0]; + final int rightScreen = mTempVisiblePagesRange[1]; + if (leftScreen != -1 && rightScreen != -1) { + // calling setChildrenLayersEnabled on a view that's not visible/rendered + // causes slowdowns on some graphics cards, so we set it here to be sure + // it's only called when it's safe (ie when the view will be rendered) + for (int i = leftScreen; i <= rightScreen; i++) { + ((ViewGroup)getPageAt(i)).setChildrenLayersEnabled(true); + } + } + } super.dispatchDraw(canvas); if (mInScrollArea && !LauncherApplication.isScreenLarge()) { @@ -1345,8 +1358,13 @@ public class Workspace extends SmoothPagedView if (enableChildrenLayers != mChildrenLayersEnabled) { mChildrenLayersEnabled = enableChildrenLayers; - for (int i = 0; i < getPageCount(); i++) { - ((ViewGroup)getChildAt(i)).setChildrenLayersEnabled(enableChildrenLayers); + // calling setChildrenLayersEnabled on a view that's not visible/rendered + // causes slowdowns on some graphics cards, so we only disable it here and leave + // the enabling to dispatchDraw + if (!enableChildrenLayers) { + for (int i = 0; i < getPageCount(); i++) { + ((ViewGroup)getChildAt(i)).setChildrenLayersEnabled(false); + } } } } |