diff options
author | Fred Quintana <fredq@google.com> | 2009-08-26 18:49:19 -0700 |
---|---|---|
committer | Debajit Ghosh <debajit@google.com> | 2009-08-27 01:46:08 -0700 |
commit | 3cff76aaa893049d02467a231d477e86a0f80daa (patch) | |
tree | b36c2395b2ed3ac9b18a4020b41dce535b580720 /core/java/android/content | |
parent | 42b1648212d31dbc63518ca8379f145fef1efcb8 (diff) | |
download | frameworks_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')
-rw-r--r-- | core/java/android/content/AbstractThreadedSyncAdapter.java | 9 |
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; } } |