summaryrefslogtreecommitdiffstats
path: root/core/java/android/content/AbstractThreadedSyncAdapter.java
diff options
context:
space:
mode:
authorFred Quintana <fredq@google.com>2009-08-26 18:49:19 -0700
committerDebajit Ghosh <debajit@google.com>2009-08-27 01:46:08 -0700
commit3cff76aaa893049d02467a231d477e86a0f80daa (patch)
treeb36c2395b2ed3ac9b18a4020b41dce535b580720 /core/java/android/content/AbstractThreadedSyncAdapter.java
parent42b1648212d31dbc63518ca8379f145fef1efcb8 (diff)
downloadframeworks_base-3cff76aaa893049d02467a231d477e86a0f80daa.zip
frameworks_base-3cff76aaa893049d02467a231d477e86a0f80daa.tar.gz
frameworks_base-3cff76aaa893049d02467a231d477e86a0f80daa.tar.bz2
make sure that the sync thread is protected by a consistent lock
Diffstat (limited to 'core/java/android/content/AbstractThreadedSyncAdapter.java')
-rw-r--r--core/java/android/content/AbstractThreadedSyncAdapter.java9
1 files changed, 5 insertions, 4 deletions
diff --git a/core/java/android/content/AbstractThreadedSyncAdapter.java b/core/java/android/content/AbstractThreadedSyncAdapter.java
index 424cb19..b01fc08 100644
--- a/core/java/android/content/AbstractThreadedSyncAdapter.java
+++ b/core/java/android/content/AbstractThreadedSyncAdapter.java
@@ -39,8 +39,9 @@ public abstract class AbstractThreadedSyncAdapter {
private final AtomicInteger mNumSyncStarts;
private final ISyncAdapterImpl mISyncAdapterImpl;
- // all accesses to this member variable must be synchronized on "this"
+ // all accesses to this member variable must be synchronized on mSyncThreadLock
private SyncThread mSyncThread;
+ private final Object mSyncThreadLock = new Object();
/** Kernel event log tag. Also listed in data/etc/event-log-tags. */
public static final int LOG_SYNC_DETAILS = 2743;
@@ -71,7 +72,7 @@ public abstract class AbstractThreadedSyncAdapter {
boolean alreadyInProgress;
// synchronize to make sure that mSyncThread doesn't change between when we
// check it and when we use it
- synchronized (this) {
+ synchronized (mSyncThreadLock) {
if (mSyncThread == null) {
if (mAutoInitialize
&& extras != null
@@ -102,7 +103,7 @@ public abstract class AbstractThreadedSyncAdapter {
public void cancelSync(ISyncContext syncContext) {
// synchronize to make sure that mSyncThread doesn't change between when we
// check it and when we use it
- synchronized (this) {
+ synchronized (mSyncThreadLock) {
if (mSyncThread != null
&& mSyncThread.mSyncContext.getISyncContext() == syncContext) {
mSyncThread.interrupt();
@@ -158,7 +159,7 @@ public abstract class AbstractThreadedSyncAdapter {
}
// synchronize so that the assignment will be seen by other threads
// that also synchronize accesses to mSyncThread
- synchronized (this) {
+ synchronized (mSyncThreadLock) {
mSyncThread = null;
}
}