summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2012-07-23 19:52:38 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-07-23 19:52:38 -0700
commit4a3b54f51f54b5d68926d312eb07d74f90a1673d (patch)
tree13241a9286222bb831eb98ea6161e19b588ceed6 /src
parente0ab0aa9743581a178a11610e68b0d7417889aa5 (diff)
parentbf5529bd401ad471658b878f313e32ed8639b479 (diff)
downloadandroid_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)
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher2/DeferredHandler.java12
-rw-r--r--src/com/android/launcher2/LauncherModel.java5
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);