Merge branch 'froyo' into froyo-release
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index e4c7dea..b5f20e4 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -1617,7 +1617,6 @@
         private EditText mInput;
 
         Dialog createDialog() {
-            mWaitingForResult = true;
             final View layout = View.inflate(Launcher.this, R.layout.rename_folder, null);
             mInput = (EditText) layout.findViewById(R.id.folder_name);
 
@@ -1649,6 +1648,7 @@
             final AlertDialog dialog = builder.create();
             dialog.setOnShowListener(new DialogInterface.OnShowListener() {
                 public void onShow(DialogInterface dialog) {
+                    mWaitingForResult = true;
                     mInput.requestFocus();
                     InputMethodManager inputManager = (InputMethodManager)
                             getSystemService(Context.INPUT_METHOD_SERVICE);
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index 72675b9..5e1abe6 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -432,7 +432,7 @@
                     Log.d(TAG, "startLoader isLaunching=" + isLaunching);
                 }
                 // Don't bother to start the thread if we know it's not going to do anything
-                if (mCallbacks.get() != null) {
+                if (mCallbacks != null && mCallbacks.get() != null) {
                     LoaderThread oldThread = mLoaderThread;
                     if (oldThread != null) {
                         if (oldThread.isLaunching()) {
@@ -635,6 +635,10 @@
                         return null;
                     }
 
+                    if (mCallbacks == null) {
+                        return null;
+                    }
+
                     final Callbacks callbacks = mCallbacks.get();
                     if (callbacks != oldCallbacks) {
                         return null;
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 7a17516..8f5bd29 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -60,7 +60,7 @@
     /**
      * The velocity at which a fling gesture will cause us to snap to the next screen
      */
-    private static final int SNAP_VELOCITY = 1000;
+    private static final int SNAP_VELOCITY = 600;
 
     private final WallpaperManager mWallpaperManager;
     
@@ -600,6 +600,11 @@
             return true;
         }
 
+        if (mVelocityTracker == null) {
+            mVelocityTracker = VelocityTracker.obtain();
+        }
+        mVelocityTracker.addMovement(ev);
+        
         switch (action & MotionEvent.ACTION_MASK) {
             case MotionEvent.ACTION_MOVE: {
                 /*
@@ -682,6 +687,11 @@
                 mTouchState = TOUCH_STATE_REST;
                 mActivePointerId = INVALID_POINTER;
                 mAllowLongPress = false;
+                
+                if (mVelocityTracker != null) {
+                    mVelocityTracker.recycle();
+                    mVelocityTracker = null;
+                }
 
                 break;