Merge "fixed vertical parallax" into honeycomb
diff --git a/src/com/android/launcher2/CacheableTextView.java b/src/com/android/launcher2/CacheableTextView.java
index 167133d..136ce21 100644
--- a/src/com/android/launcher2/CacheableTextView.java
+++ b/src/com/android/launcher2/CacheableTextView.java
@@ -21,6 +21,7 @@
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Bitmap.Config;
+import android.graphics.PorterDuff.Mode;
 import android.text.Layout;
 import android.util.AttributeSet;
 import android.widget.TextView;
@@ -111,7 +112,7 @@
                 mCache = Bitmap.createBitmap(width, height, Config.ARGB_8888);
                 mCacheCanvas.setBitmap(mCache);
             } else {
-                mCacheCanvas.drawColor(0x00000000);
+                mCacheCanvas.drawColor(0, Mode.CLEAR);
             }
 
             mCacheCanvas.save();
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index c68dcc5..45de630 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -417,7 +417,7 @@
     }
 
     public void updateCache() {
-        mCacheCanvas.drawColor(0x00000000, Mode.CLEAR);
+        mCacheCanvas.drawColor(0, Mode.CLEAR);
 
         float alpha = getAlpha();
         setAlpha(1.0f);
diff --git a/src/com/android/launcher2/HolographicOutlineHelper.java b/src/com/android/launcher2/HolographicOutlineHelper.java
index 6d0899d..1efc123 100644
--- a/src/com/android/launcher2/HolographicOutlineHelper.java
+++ b/src/com/android/launcher2/HolographicOutlineHelper.java
@@ -184,7 +184,7 @@
 
         // draw the inner and outer blur
         srcDstCanvas.setBitmap(srcDst);
-        srcDstCanvas.drawColor(0x00000000, PorterDuff.Mode.CLEAR);
+        srcDstCanvas.drawColor(0, PorterDuff.Mode.CLEAR);
         mHolographicPaint.setColor(color);
         srcDstCanvas.drawBitmap(thickInnerBlur, thickInnerBlurOffset[0], thickInnerBlurOffset[1],
                 mHolographicPaint);
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index e5d2299..2281c84 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -106,6 +106,7 @@
 import java.io.DataOutputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -1313,6 +1314,7 @@
                             (System.currentTimeMillis() - mAutoAdvanceSentTime));
                 }
                 mHandler.removeMessages(ADVANCE_MSG);
+                mHandler.removeMessages(0); // Remove messages sent using postDelayed()
             }
         }
     }
@@ -1493,6 +1495,9 @@
         } catch (NullPointerException ex) {
             Log.w(TAG, "problem while stopping AppWidgetHost during Launcher destruction", ex);
         }
+        mAppWidgetHost = null;
+
+        mWidgetsToAdvance.clear();
 
         TextKeyListener.getInstance().release();
 
@@ -1511,6 +1516,11 @@
         }
 
         unregisterReceiver(mCloseSystemDialogsReceiver);
+
+        ((ViewGroup) mWorkspace.getParent()).removeAllViews();
+        mWorkspace.removeAllViews();
+        mWorkspace = null;
+        mDragController = null;
     }
 
     @Override
@@ -1977,6 +1987,7 @@
         for (ItemInfo item: mDesktopItems) {
             item.unbind();
         }
+        mDesktopItems.clear();
     }
 
     /**
diff --git a/src/com/android/launcher2/LauncherAppWidgetHost.java b/src/com/android/launcher2/LauncherAppWidgetHost.java
index 46e66e7..68d4903 100644
--- a/src/com/android/launcher2/LauncherAppWidgetHost.java
+++ b/src/com/android/launcher2/LauncherAppWidgetHost.java
@@ -36,4 +36,10 @@
             AppWidgetProviderInfo appWidget) {
         return new LauncherAppWidgetHostView(context);
     }
+
+    @Override
+    public void stopListening() {
+        super.stopListening();
+        clearViews();
+    }
 }
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index 713268a..7e72610 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -492,6 +492,9 @@
                 mLoaderTask.stopLocked();
             }
         }
+        mItems.clear();
+        mAppWidgets.clear();
+        mFolders.clear();
     }
 
     /**
diff --git a/src/com/android/launcher2/PagedViewWithDraggableItems.java b/src/com/android/launcher2/PagedViewWithDraggableItems.java
index f24d7e0..3f72292 100644
--- a/src/com/android/launcher2/PagedViewWithDraggableItems.java
+++ b/src/com/android/launcher2/PagedViewWithDraggableItems.java
@@ -150,4 +150,10 @@
     public void setDragSlopeThreshold(float dragSlopeThreshold) {
         mDragSlopeThreshold = dragSlopeThreshold;
     }
+
+    @Override
+    protected void onDetachedFromWindow() {
+        mLastTouchedItem = null;
+        super.onDetachedFromWindow();
+    }
 }