summaryrefslogtreecommitdiffstats
path: root/core/java/com/google
diff options
context:
space:
mode:
authorTom Taylor <tomtaylor@google.com>2012-02-27 16:05:07 -0800
committerTom Taylor <tomtaylor@google.com>2012-02-27 16:05:07 -0800
commit2dc6c7fa48d749773e5ccbc98633d7cf9d35e7ac (patch)
tree9cef0a4ea513eeb26a623309fb9608fd4473a0b9 /core/java/com/google
parentcbd01c31bfa40f4e1b8df9d0d6f57b10aebc5fe9 (diff)
downloadframeworks_base-2dc6c7fa48d749773e5ccbc98633d7cf9d35e7ac.zip
frameworks_base-2dc6c7fa48d749773e5ccbc98633d7cf9d35e7ac.tar.gz
frameworks_base-2dc6c7fa48d749773e5ccbc98633d7cf9d35e7ac.tar.bz2
Remove deleted pdu items from the updated cache
When pdu's are removed from the PduCache, make sure we remove them from the list of pdu's currently being updated as well. Change-Id: I45dde4a09d74019a344fca31e3926b1ece6c393d
Diffstat (limited to 'core/java/com/google')
-rw-r--r--core/java/com/google/android/mms/pdu/PduPersister.java12
-rw-r--r--core/java/com/google/android/mms/util/PduCache.java4
2 files changed, 16 insertions, 0 deletions
diff --git a/core/java/com/google/android/mms/pdu/PduPersister.java b/core/java/com/google/android/mms/pdu/PduPersister.java
index 7037b61..b04f890 100644
--- a/core/java/com/google/android/mms/pdu/PduPersister.java
+++ b/core/java/com/google/android/mms/pdu/PduPersister.java
@@ -513,6 +513,9 @@ public class PduPersister {
PduCacheEntry cacheEntry;
synchronized(PDU_CACHE_INSTANCE) {
if (PDU_CACHE_INSTANCE.isUpdating(uri)) {
+ if (LOCAL_LOGV) {
+ Log.v(TAG, "load: " + uri + " blocked by isUpdating()");
+ }
try {
PDU_CACHE_INSTANCE.wait();
} catch (InterruptedException e) {
@@ -840,6 +843,9 @@ public class PduPersister {
// If the cache item is getting updated, wait until it's done updating before
// purging it.
if (PDU_CACHE_INSTANCE.isUpdating(uri)) {
+ if (LOCAL_LOGV) {
+ Log.v(TAG, "updateHeaders: " + uri + " blocked by isUpdating()");
+ }
try {
PDU_CACHE_INSTANCE.wait();
} catch (InterruptedException e) {
@@ -1002,6 +1008,9 @@ public class PduPersister {
PduCacheEntry cacheEntry;
synchronized(PDU_CACHE_INSTANCE) {
if (PDU_CACHE_INSTANCE.isUpdating(uri)) {
+ if (LOCAL_LOGV) {
+ Log.v(TAG, "updateParts: " + uri + " blocked by isUpdating()");
+ }
try {
PDU_CACHE_INSTANCE.wait();
} catch (InterruptedException e) {
@@ -1097,6 +1106,9 @@ public class PduPersister {
// If the cache item is getting updated, wait until it's done updating before
// purging it.
if (PDU_CACHE_INSTANCE.isUpdating(uri)) {
+ if (LOCAL_LOGV) {
+ Log.v(TAG, "persist: " + uri + " blocked by isUpdating()");
+ }
try {
PDU_CACHE_INSTANCE.wait();
} catch (InterruptedException e) {
diff --git a/core/java/com/google/android/mms/util/PduCache.java b/core/java/com/google/android/mms/util/PduCache.java
index 87cb48e..de83124 100644
--- a/core/java/com/google/android/mms/util/PduCache.java
+++ b/core/java/com/google/android/mms/util/PduCache.java
@@ -161,6 +161,7 @@ public final class PduCache extends AbstractCache<Uri, PduCacheEntry> {
}
private PduCacheEntry purgeSingleEntry(Uri key) {
+ mUpdating.remove(key);
PduCacheEntry entry = super.purge(key);
if (entry != null) {
removeFromThreads(key, entry);
@@ -176,6 +177,7 @@ public final class PduCache extends AbstractCache<Uri, PduCacheEntry> {
mMessageBoxes.clear();
mThreads.clear();
+ mUpdating.clear();
}
/**
@@ -216,6 +218,7 @@ public final class PduCache extends AbstractCache<Uri, PduCacheEntry> {
HashSet<Uri> msgBox = mMessageBoxes.remove(msgBoxId);
if (msgBox != null) {
for (Uri key : msgBox) {
+ mUpdating.remove(key);
PduCacheEntry entry = super.purge(key);
if (entry != null) {
removeFromThreads(key, entry);
@@ -240,6 +243,7 @@ public final class PduCache extends AbstractCache<Uri, PduCacheEntry> {
HashSet<Uri> thread = mThreads.remove(threadId);
if (thread != null) {
for (Uri key : thread) {
+ mUpdating.remove(key);
PduCacheEntry entry = super.purge(key);
if (entry != null) {
removeFromMessageBoxes(key, entry);