Fix white square bug when new apps are added while home is not active.
diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java
index 8d6820c..7cba4bb 100644
--- a/src/com/android/launcher2/AllAppsView.java
+++ b/src/com/android/launcher2/AllAppsView.java
@@ -158,6 +158,7 @@
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
super.surfaceDestroyed(holder);
+ mRollo.mHasSurface = false;
}
@Override
@@ -171,11 +172,15 @@
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 @@
private Bitmap mSelectionBitmap;
private Canvas mSelectionCanvas;
+ boolean mHasSurface = false;
+ private boolean mAppsDirty = false;
Params mParams;
State mState;
@@ -922,6 +929,20 @@
mRS.contextBindRootScript(mScript);
}
+ private void uploadApps(ArrayList<ApplicationInfo> 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<ApplicationInfo> list) {
final int count = list != null ? list.size() : 0;
int allocCount = count;
@@ -941,12 +962,8 @@
Utilities.BubbleText bubble = new Utilities.BubbleText(getContext());
- for (int i=0; i<count; i++) {
- uploadAppIcon(i, list.get(i));
- }
-
mState.iconCount = count;
-
+ uploadApps(list);
saveAppsList();
}
@@ -1021,7 +1038,11 @@
System.arraycopy(mLabels, index, mLabels, dest, count);
System.arraycopy(mLabelIds, index, mLabelIds, dest, count);
- uploadAppIcon(index, item);
+ if (mHasSurface ) {
+ uploadAppIcon(index, item);
+ } else {
+ mAppsDirty = true;
+ }
}
/**