Merge "Enabling tests for pausing apps" into ub-launcher3-qt-dev
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index e7b4ff4..ac392a6 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -165,17 +165,6 @@
mBgAllAppsList = new AllAppsList(iconCache, appFilter);
}
- /** Runs the specified runnable immediately if called from the worker thread, otherwise it is
- * posted on the worker thread handler. */
- private static void runOnWorkerThread(Runnable r) {
- if (sWorkerThread.getThreadId() == Process.myTid()) {
- r.run();
- } else {
- // If we are not on the worker thread, then post to the worker handler
- sWorker.post(r);
- }
- }
-
public void setPackageState(PackageInstallInfo installInfo) {
enqueueModelUpdateTask(new PackageInstallStateChangedTask(installInfo));
}
@@ -400,7 +389,10 @@
synchronized (mLock) {
stopLoader();
mLoaderTask = new LoaderTask(mApp, mBgAllAppsList, sBgDataModel, results);
- runOnWorkerThread(mLoaderTask);
+
+ // Always post the loader task, instead of running directly (even on same thread) so
+ // that we exit any nested synchronized blocks
+ sWorker.post(mLoaderTask);
}
}
@@ -505,7 +497,13 @@
public void enqueueModelUpdateTask(ModelUpdateTask task) {
task.init(mApp, this, sBgDataModel, mBgAllAppsList, mUiExecutor);
- runOnWorkerThread(task);
+
+ if (sWorkerThread.getThreadId() == Process.myTid()) {
+ task.run();
+ } else {
+ // If we are not on the worker thread, then post to the worker handler
+ sWorker.post(task);
+ }
}
/**