diff options
author | Adam Cohen <adamcohen@google.com> | 2012-07-23 19:52:38 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-07-23 19:52:38 -0700 |
commit | 4a3b54f51f54b5d68926d312eb07d74f90a1673d (patch) | |
tree | 13241a9286222bb831eb98ea6161e19b588ceed6 | |
parent | e0ab0aa9743581a178a11610e68b0d7417889aa5 (diff) | |
parent | bf5529bd401ad471658b878f313e32ed8639b479 (diff) | |
download | android_packages_apps_Trebuchet-4a3b54f51f54b5d68926d312eb07d74f90a1673d.tar.gz android_packages_apps_Trebuchet-4a3b54f51f54b5d68926d312eb07d74f90a1673d.tar.bz2 android_packages_apps_Trebuchet-4a3b54f51f54b5d68926d312eb07d74f90a1673d.zip |
am bf5529bd: am a13a2f2a: Fixing issue where defered unbind was running after synchronous bind. (Bug 6858398, Bug 6863181)
* commit 'bf5529bd401ad471658b878f313e32ed8639b479':
Fixing issue where defered unbind was running after synchronous bind. (Bug 6858398, Bug 6863181)
-rw-r--r-- | src/com/android/launcher2/DeferredHandler.java | 12 | ||||
-rw-r--r-- | src/com/android/launcher2/LauncherModel.java | 5 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/com/android/launcher2/DeferredHandler.java b/src/com/android/launcher2/DeferredHandler.java index 930da56aa..b7e48b130 100644 --- a/src/com/android/launcher2/DeferredHandler.java +++ b/src/com/android/launcher2/DeferredHandler.java @@ -98,6 +98,18 @@ public class DeferredHandler { } } + /** Runs all queued Runnables from the calling thread. */ + public void flush() { + LinkedList<Runnable> queue = new LinkedList<Runnable>(); + synchronized (mQueue) { + queue.addAll(mQueue); + mQueue.clear(); + } + for (Runnable r : queue) { + r.run(); + } + } + void scheduleNextLocked() { if (mQueue.size() > 0) { Runnable peek = mQueue.getFirst(); diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index 1b79c9b15..3e214e64d 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -1014,6 +1014,11 @@ public class LauncherModel extends BroadcastReceiver { // data structures, we can't allow any other thread to touch that data, but because // this call is synchronous, we can get away with not locking). + // The LauncherModel is static in the LauncherApplication and mHandler may have queued + // operations from the previous activity. We need to ensure that all queued operations + // are executed before any synchronous binding work is done. + mHandler.flush(); + // Divide the set of loaded items into those that we are binding synchronously, and // everything else that is to be bound normally (asynchronously). bindWorkspace(synchronousBindPage); |