summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Bringert <bringert@android.com>2009-08-26 11:41:40 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2009-08-26 11:41:40 -0700
commit98d8858890227861c5dc28bc7acee9b1adedda45 (patch)
tree0b5e9b9beec7a3751b1987515c3a51e6bd46ea63
parent4b8e3fb51155ab6c990803ff7780cd1b8c8f3dcf (diff)
parentba223760895e62ad2fcb85476984cb29018860c9 (diff)
downloadframeworks_base-98d8858890227861c5dc28bc7acee9b1adedda45.zip
frameworks_base-98d8858890227861c5dc28bc7acee9b1adedda45.tar.gz
frameworks_base-98d8858890227861c5dc28bc7acee9b1adedda45.tar.bz2
am ba223760: Close suggestion cursors that arrive after adapter is closed
Merge commit 'ba223760895e62ad2fcb85476984cb29018860c9' into eclair * commit 'ba223760895e62ad2fcb85476984cb29018860c9': Close suggestion cursors that arrive after adapter is closed
-rw-r--r--core/java/android/app/SearchDialog.java2
-rw-r--r--core/java/android/app/SuggestionsAdapter.java13
2 files changed, 14 insertions, 1 deletions
diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java
index 8a9cca7..f776452 100644
--- a/core/java/android/app/SearchDialog.java
+++ b/core/java/android/app/SearchDialog.java
@@ -428,7 +428,7 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
mSearchAutoComplete.setAdapter((SuggestionsAdapter)null);
// close any leftover cursor
if (mSuggestionsAdapter != null) {
- mSuggestionsAdapter.changeCursor(null);
+ mSuggestionsAdapter.close();
}
mSuggestionsAdapter = null;
}
diff --git a/core/java/android/app/SuggestionsAdapter.java b/core/java/android/app/SuggestionsAdapter.java
index 52e4a1f..90f8c50 100644
--- a/core/java/android/app/SuggestionsAdapter.java
+++ b/core/java/android/app/SuggestionsAdapter.java
@@ -65,6 +65,7 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
private WeakHashMap<String, Drawable.ConstantState> mOutsideDrawablesCache;
private SparseArray<Drawable.ConstantState> mBackgroundsCache;
private boolean mGlobalSearchMode;
+ private boolean mClosed = false;
// Cached column indexes, updated when the cursor changes.
private int mFormatCol;
@@ -199,6 +200,12 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
}
}
+ public void close() {
+ if (DBG) Log.d(LOG_TAG, "close()");
+ changeCursor(null);
+ mClosed = true;
+ }
+
/**
* Cache columns.
*/
@@ -206,6 +213,12 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
public void changeCursor(Cursor c) {
if (DBG) Log.d(LOG_TAG, "changeCursor(" + c + ")");
+ if (mClosed) {
+ Log.w(LOG_TAG, "Tried to change cursor after adapter was closed.");
+ if (c != null) c.close();
+ return;
+ }
+
try {
Cursor oldCursor = getCursor();
super.changeCursor(c);