Always have the AllAppsView visible, but have it draw nothing
when it shouldn't be visible.

This lets us do clean animations and not wait for GL to spool up.
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml
index 5b5c37c..edfa9f1 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -26,7 +26,6 @@
         android:id="@+id/all_apps_view"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
-        android:visibility="gone"
 
         android:scrollbarStyle="outsideInset"
         android:drawSelectorOnTop="false"
diff --git a/res/raw/rollo.c b/res/raw/rollo.c
index 028d537..283d89d 100644
--- a/res/raw/rollo.c
+++ b/res/raw/rollo.c
@@ -33,7 +33,7 @@
 #define STATE_SELECTED_ICON_INDEX       9
 #define STATE_SELECTED_ICON_TEXTURE     10
 
-#define STATE_BORDERY0                  11
+#define STATE_VISIBLE                   11
 
 // Drawing constants, should be parameters ======
 #define VIEW_ANGLE 1.28700222f
@@ -155,6 +155,11 @@
     // Clear to transparent
     pfClearColor(0.0f, 0.0f, 0.0f, 0.0f);
 
+    // If we're not supposed to be showing, don't do anything.
+    if (!loadI32(ALLOC_STATE, STATE_VISIBLE)) {
+        return 0;
+    }
+
     // icons & labels
     int iconCount = loadI32(ALLOC_STATE, STATE_ICON_COUNT);
     int pageCount = count_pages(iconCount);
diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java
index 375fc12..9967332 100644
--- a/src/com/android/launcher2/AllAppsView.java
+++ b/src/com/android/launcher2/AllAppsView.java
@@ -282,6 +282,18 @@
     public void onDropCompleted(View target, boolean success) {
     }
 
+    public void show() {
+        mRollo.mState.read();
+        mRollo.mState.visible = 1;
+        mRollo.mState.save();
+    }
+
+    public void hide(boolean animate) {
+        mRollo.mState.read();
+        mRollo.mState.visible = 0;
+        mRollo.mState.save();
+    }
+
     /*
     private TouchHandler mScrollHandler = new TouchHandler() {
         @Override
@@ -409,6 +421,7 @@
             @AllocationIndex(8) public int startScrollX;
             @AllocationIndex(9) public int selectedIconIndex = -1;
             @AllocationIndex(10) public int selectedIconTexture;
+            @AllocationIndex(11) public int visible;
         }
 
         public RolloRS() {
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 06f106e..9bcb537 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -1583,7 +1583,7 @@
 
     void showAllAppsDialog() {
         mAllAppsVisible = true;
-        mAllAppsGrid.setVisibility(View.VISIBLE);
+        mAllAppsGrid.show();
         mWorkspace.hide();
         
         // TODO: fade these two too
@@ -1594,12 +1594,7 @@
     void closeAllAppsDialog(boolean animated) {
         if (mAllAppsVisible) {
             Log.d(LOG_TAG, "closing all apps");
-            if (animated) {
-                // TODO mDrawer.animateClose();
-                mAllAppsGrid.setVisibility(View.GONE);
-            } else {
-                mAllAppsGrid.setVisibility(View.GONE);
-            }
+            mAllAppsGrid.hide(animated);
             mAllAppsVisible = false;
             mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus();
             mWorkspace.show();