Minor cleanup and fix for the cannot launch apps bug if the screen is still creeping.
diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java
index 17d9a78..df43814 100644
--- a/src/com/android/launcher2/AllAppsView.java
+++ b/src/com/android/launcher2/AllAppsView.java
@@ -262,7 +262,7 @@
             return;
         }
         int index = mRollo.mState.selectedIconIndex;
-        if (mRollo.mState.flingVelocityX == 0 && index >= 0 && index < mAllAppsList.size()) {
+        if (mRollo.mReadback.velocity < 1 && index >= 0 && index < mAllAppsList.size()) {
             ApplicationInfo app = mAllAppsList.get(index);
             mLauncher.startActivitySafely(app.intent);
         }
@@ -416,17 +416,13 @@
         private Script.Invokable mInvokeSetZoom;
         private Script.Invokable mInvokeTouchUp;
 
-        private Sampler mSampler;
-        private Sampler mSamplerText;
-        private ProgramStore mPSBackground;
+        private ProgramStore mPSIcons;
         private ProgramStore mPSText;
-        private ProgramFragment mPFDebug;
-        private ProgramFragment mPFImages;
-        private ProgramFragment mPFOrtho;
+        private ProgramFragment mPFColor;
+        private ProgramFragment mPFTexLinear;
+        private ProgramFragment mPFTexNearest;
         private ProgramVertex mPV;
-        private ProgramVertex.MatrixAllocation mPVAlloc;
         private ProgramVertex mPVOrtho;
-        private ProgramVertex.MatrixAllocation mPVOrthoAlloc;
 
         private Allocation mScrollHandle;
 
@@ -518,75 +514,76 @@
             mRes = res;
             mWidth = width;
             mHeight = height;
+            initProgramVertex();
+            initProgramFragment();
+            initProgramStore();
             initGl();
             initData();
             initTouchState();
             initRs();
         }
 
-        private void initGl() {
-            Sampler.Builder sb = new Sampler.Builder(mRS);
-            sb.setMin(Sampler.Value.LINEAR);//_MIP_LINEAR);
-            sb.setMag(Sampler.Value.LINEAR);
-            sb.setWrapS(Sampler.Value.CLAMP);
-            sb.setWrapT(Sampler.Value.CLAMP);
-            mSampler = sb.create();
-
-            sb.setMin(Sampler.Value.NEAREST);
-            sb.setMag(Sampler.Value.NEAREST);
-            mSamplerText = sb.create();
-
-            ProgramFragment.Builder dbg = new ProgramFragment.Builder(mRS, null, null);
-            mPFDebug = dbg.create();
-            mPFDebug.setName("PFDebug");
-
-            ProgramFragment.Builder bf = new ProgramFragment.Builder(mRS, null, null);
-            bf.setTexEnable(true, 0);
-            bf.setTexEnvMode(ProgramFragment.EnvMode.MODULATE, 0);
-            mPFImages = bf.create();
-            mPFImages.setName("PF");
-            mPFImages.bindSampler(mSampler, 0);
-
-            bf.setTexEnvMode(ProgramFragment.EnvMode.MODULATE, 0);
-            //mPFOrtho = bf.create();
-            mPFOrtho = (new ProgramFragment.Builder(mRS, null, null)).create();
-            mPFOrtho.setName("PFOrtho");
-            mPFOrtho.bindSampler(mSamplerText, 0);
-
-            ProgramStore.Builder bs = new ProgramStore.Builder(mRS, null, null);
-            bs.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
-            bs.setDitherEnable(false);
-            bs.setDepthMask(true);
-            bs.setBlendFunc(ProgramStore.BlendSrcFunc.SRC_ALPHA,
-                            ProgramStore.BlendDstFunc.ONE_MINUS_SRC_ALPHA);
-            mPSBackground = bs.create();
-            mPSBackground.setName("PFS");
-
-            bs.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
-            bs.setDepthMask(false);
-            bs.setBlendFunc(ProgramStore.BlendSrcFunc.SRC_ALPHA,
-                            ProgramStore.BlendDstFunc.ONE_MINUS_SRC_ALPHA);
-            mPSText = bs.create();
-            mPSText.setName("PFSText");
-
-            mPVAlloc = new ProgramVertex.MatrixAllocation(mRS);
-            mPVAlloc.setupProjectionNormalized(mWidth, mHeight);
+        private void initProgramVertex() {
+            ProgramVertex.MatrixAllocation pva = new ProgramVertex.MatrixAllocation(mRS);
+            pva.setupProjectionNormalized(mWidth, mHeight);
 
             ProgramVertex.Builder pvb = new ProgramVertex.Builder(mRS, null, null);
             mPV = pvb.create();
             mPV.setName("PV");
-            mPV.bindAllocation(mPVAlloc);
+            mPV.bindAllocation(pva);
 
-            mPVOrthoAlloc = new ProgramVertex.MatrixAllocation(mRS);
-            mPVOrthoAlloc.setupOrthoWindow(mWidth, mHeight);
-
+            pva = new ProgramVertex.MatrixAllocation(mRS);
+            pva.setupOrthoWindow(mWidth, mHeight);
             pvb.setTextureMatrixEnable(true);
             mPVOrtho = pvb.create();
             mPVOrtho.setName("PVOrtho");
-            mPVOrtho.bindAllocation(mPVOrthoAlloc);
+            mPVOrtho.bindAllocation(pva);
 
             mRS.contextBindProgramVertex(mPV);
+        }
 
+        private void initProgramFragment() {
+            Sampler.Builder sb = new Sampler.Builder(mRS);
+            sb.setMin(Sampler.Value.LINEAR);
+            sb.setMag(Sampler.Value.LINEAR);
+            sb.setWrapS(Sampler.Value.CLAMP);
+            sb.setWrapT(Sampler.Value.CLAMP);
+            Sampler linear = sb.create();
+
+            sb.setMin(Sampler.Value.NEAREST);
+            sb.setMag(Sampler.Value.NEAREST);
+            Sampler nearest = sb.create();
+
+            ProgramFragment.Builder bf = new ProgramFragment.Builder(mRS, null, null);
+            mPFColor = bf.create();
+            mPFColor.setName("PFColor");
+
+            bf.setTexEnable(true, 0);
+            bf.setTexEnvMode(ProgramFragment.EnvMode.MODULATE, 0);
+            mPFTexLinear = bf.create();
+            mPFTexLinear.setName("PFTexLinear");
+            mPFTexLinear.bindSampler(linear, 0);
+
+            mPFTexNearest = bf.create();
+            mPFTexNearest.setName("PFTexNearest");
+            mPFTexNearest.bindSampler(nearest, 0);
+        }
+
+        private void initProgramStore() {
+            ProgramStore.Builder bs = new ProgramStore.Builder(mRS, null, null);
+            bs.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
+            bs.setDitherEnable(true);
+            bs.setBlendFunc(ProgramStore.BlendSrcFunc.SRC_ALPHA,
+                            ProgramStore.BlendDstFunc.ONE_MINUS_SRC_ALPHA);
+            mPSIcons = bs.create();
+            mPSIcons.setName("PSIcons");
+
+            //bs.setDitherEnable(false);
+            //mPSText = bs.create();
+            //mPSText.setName("PSText");
+        }
+
+        private void initGl() {
             mTouchXBorders = new int[Defines.COLUMNS_PER_PAGE+1];
             mAllocTouchXBorders = Allocation.createSized(mRS, Element.USER_I32(mRS),
                     mTouchXBorders.length);