diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java index 8d6820cfe9..7cba4bbee4 100644 --- a/src/com/android/launcher2/AllAppsView.java +++ b/src/com/android/launcher2/AllAppsView.java @@ -158,6 +158,7 @@ public class AllAppsView extends RSSurfaceView @Override public void surfaceDestroyed(SurfaceHolder holder) { super.surfaceDestroyed(holder); + mRollo.mHasSurface = false; } @Override @@ -171,11 +172,15 @@ public class AllAppsView extends RSSurfaceView mRS = createRenderScript(true); mRollo = new RolloRS(); + mRollo.mHasSurface = true; mRollo.init(getResources(), w, h); if (mAllAppsList != null) { mRollo.setApps(mAllAppsList); Log.d(TAG, "surfaceChanged... calling mRollo.setApps"); } + } else { + mRollo.mHasSurface = true; + mRollo.dirtyCheck(); } Resources res = getContext().getResources(); @@ -672,6 +677,8 @@ public class AllAppsView extends RSSurfaceView private Bitmap mSelectionBitmap; private Canvas mSelectionCanvas; + boolean mHasSurface = false; + private boolean mAppsDirty = false; Params mParams; State mState; @@ -922,6 +929,20 @@ public class AllAppsView extends RSSurfaceView mRS.contextBindRootScript(mScript); } + private void uploadApps(ArrayList list) { + for (int i=0; i < mState.iconCount; i++) { + uploadAppIcon(i, list.get(i)); + } + } + + void dirtyCheck() { + if (mAppsDirty && mHasSurface) { + uploadApps(mAllAppsList); + saveAppsList(); + mAppsDirty = false; + } + } + private void setApps(ArrayList list) { final int count = list != null ? list.size() : 0; int allocCount = count; @@ -941,12 +962,8 @@ public class AllAppsView extends RSSurfaceView Utilities.BubbleText bubble = new Utilities.BubbleText(getContext()); - for (int i=0; i