summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorMichael Jurka <mikejurka@google.com>2011-11-09 22:09:06 -0800
committerMichael Jurka <mikejurka@google.com>2011-11-10 02:36:08 -0800
commitdde558b8b8bcf3fac6d2ceceafa1f7546f98a264 (patch)
tree83baddf11e60cb2b8d17bec31c97bfb8bd35b456 /src/com
parentec8bd08ad950bdfed8ad0d15f74f8f7c98fa1b3c (diff)
downloadandroid_packages_apps_Trebuchet-dde558b8b8bcf3fac6d2ceceafa1f7546f98a264.tar.gz
android_packages_apps_Trebuchet-dde558b8b8bcf3fac6d2ceceafa1f7546f98a264.tar.bz2
android_packages_apps_Trebuchet-dde558b8b8bcf3fac6d2ceceafa1f7546f98a264.zip
resolved conflicts for merge of b9c76f32 to ics-mr1
Change-Id: I7579e312c48c9f9279e93283629036a9332aa34c
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/launcher2/PagedView.java41
-rw-r--r--src/com/android/launcher2/Workspace.java22
2 files changed, 47 insertions, 16 deletions
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index 2de7d4a4b..0ba4f0b47 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -127,6 +127,7 @@ public abstract class PagedView extends ViewGroup {
protected boolean mCenterPagesVertically;
protected boolean mAllowOverScroll = true;
protected int mUnboundedScrollX;
+ protected int[] mTempVisiblePagesRange = new int[2];
// parameter that adjusts the layout to be optimized for pages with that scale factor
protected float mLayoutScale = 1.0f;
@@ -701,20 +702,7 @@ public abstract class PagedView extends ViewGroup {
return (int) (maxWidth * mLayoutScale + 0.5f);
}
- @Override
- protected void dispatchDraw(Canvas canvas) {
- int halfScreenSize = getMeasuredWidth() / 2;
- int screenCenter = mScrollX + halfScreenSize;
-
- if (screenCenter != mLastScreenCenter || mForceScreenScrolled) {
- screenScrolled(screenCenter);
- mLastScreenCenter = screenCenter;
- mForceScreenScrolled = false;
- }
-
- // Find out which screens are visible; as an optimization we only call draw on them
- // As an optimization, this code assumes that all pages have the same width as the 0th
- // page.
+ protected void getVisiblePages(int[] range) {
final int pageCount = getChildCount();
if (pageCount > 0) {
final int pageWidth = getScaledMeasuredWidth(getPageAt(0));
@@ -731,6 +719,31 @@ public abstract class PagedView extends ViewGroup {
rightScreen++;
x += getScaledMeasuredWidth(getPageAt(rightScreen)) + mPageSpacing;
}
+ range[0] = leftScreen;
+ range[1] = rightScreen;
+ } else {
+ range[0] = -1;
+ range[1] = -1;
+ }
+ }
+
+ @Override
+ protected void dispatchDraw(Canvas canvas) {
+ int halfScreenSize = getMeasuredWidth() / 2;
+ int screenCenter = mScrollX + halfScreenSize;
+
+ if (screenCenter != mLastScreenCenter || mForceScreenScrolled) {
+ screenScrolled(screenCenter);
+ mLastScreenCenter = screenCenter;
+ mForceScreenScrolled = false;
+ }
+
+ // Find out which screens are visible; as an optimization we only call draw on them
+ final int pageCount = getChildCount();
+ if (pageCount > 0) {
+ getVisiblePages(mTempVisiblePagesRange);
+ final int leftScreen = mTempVisiblePagesRange[0];
+ final int rightScreen = mTempVisiblePagesRange[1];
final long drawingTime = getDrawingTime();
// Clip to the bounds
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);
+ }
}
}
}