fix 2411389 - calling RS with no Context
This thing where the context sometimes works and sometimes doesn't is starting to piss me off. We
really need to have RenderScriptActivity that deals with the lifecycle for you...
diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java
index 321874b..d3503de 100644
--- a/src/com/android/launcher2/AllAppsView.java
+++ b/src/com/android/launcher2/AllAppsView.java
@@ -160,9 +160,14 @@
mRS = createRenderScript(true);
}
+ /**
+ * Note that this implementation prohibits this view from ever being reattached.
+ */
@Override
protected void onDetachedFromWindow() {
destroyRenderScript();
+ mRS.mMessageCallback = null;
+ mRS = null;
}
/**
@@ -217,7 +222,9 @@
mRollo.dirtyCheck();
mRollo.resize(w, h);
- mRS.mMessageCallback = mMessageProc = new AAMessage();
+ if (mRS != null) {
+ mRS.mMessageCallback = mMessageProc = new AAMessage();
+ }
Resources res = getContext().getResources();
int barHeight = (int)res.getDimension(R.dimen.button_bar_height);
@@ -683,6 +690,11 @@
}
public void setApps(ArrayList<ApplicationInfo> list) {
+ if (mRS == null) {
+ // We've been removed from the window. Don't bother with all this.
+ return;
+ }
+
mAllAppsList = list;
if (mRollo != null) {
mRollo.setApps(list);
@@ -695,6 +707,10 @@
// Not done loading yet. We'll find out about it later.
return;
}
+ if (mRS == null) {
+ // We've been removed from the window. Don't bother with all this.
+ return;
+ }
final int N = list.size();
if (mRollo != null) {