resolved conflicts for merge of b9c76f32 to ics-mr1

Change-Id: I7579e312c48c9f9279e93283629036a9332aa34c
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index 2de7d4a..0ba4f0b 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -127,6 +127,7 @@
     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 @@
         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 @@
                 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