diff options
author | Andy Huang <ath@google.com> | 2013-05-21 18:08:08 -0700 |
---|---|---|
committer | Andy Huang <ath@google.com> | 2013-05-21 18:08:08 -0700 |
commit | d521baf3a51c9fc1306bd55e027ce57d0a1d18aa (patch) | |
tree | 9b57de2cf09c3c778f6e43a7cd0ba5f1520442c0 /src/com/android/mail/content | |
parent | fa225db4767867509fd962ac671e054294d13702 (diff) | |
download | android_packages_apps_UnifiedEmail-d521baf3a51c9fc1306bd55e027ce57d0a1d18aa.tar.gz android_packages_apps_UnifiedEmail-d521baf3a51c9fc1306bd55e027ce57d0a1d18aa.tar.bz2 android_packages_apps_UnifiedEmail-d521baf3a51c9fc1306bd55e027ce57d0a1d18aa.zip |
not all respond() calls require locking
The UI thread uses respond() to signal user-visibility on each list
item, so we definitely don't want to block the UI thread on those kinds
of respond() calls. Add an options bitfield whose inaugural value is a
bit that hints that the cursor position must be safely moved prior to
respond().
This fixes some big hiccups that result when syncing + scrolling with
the respond CLs yesterday.
Bug: 9032162
Change-Id: I1c927453b9f474c89861a7295de1e318279e3a49
Diffstat (limited to 'src/com/android/mail/content')
-rw-r--r-- | src/com/android/mail/content/ThreadSafeCursorWrapper.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/com/android/mail/content/ThreadSafeCursorWrapper.java b/src/com/android/mail/content/ThreadSafeCursorWrapper.java index 35ec10370..ed2b3f93a 100644 --- a/src/com/android/mail/content/ThreadSafeCursorWrapper.java +++ b/src/com/android/mail/content/ThreadSafeCursorWrapper.java @@ -20,6 +20,7 @@ import android.database.Cursor; import android.database.CursorWrapper; import android.os.Bundle; +import com.android.mail.providers.UIProvider; import com.android.mail.utils.LogTag; import com.android.mail.utils.LogUtils; @@ -98,8 +99,13 @@ public class ThreadSafeCursorWrapper extends CursorWrapper { @Override public Bundle respond(Bundle extras) { - synchronized (mLock) { - moveToCurrent(); + final int opts = extras.getInt(UIProvider.ConversationCursorCommand.COMMAND_KEY_OPTIONS); + if ((opts & UIProvider.ConversationCursorCommand.OPTION_MOVE_POSITION) != 0) { + synchronized (mLock) { + moveToCurrent(); + return super.respond(extras); + } + } else { return super.respond(extras); } } |