summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2018-02-15 10:27:42 -0800
committerSunny Goyal <sunnygoyal@google.com>2018-02-15 10:31:50 -0800
commita1b4911e2606c5b9f36d0692f0bd0856c6e24683 (patch)
tree2d57af95d059c2b5b75b900e6cf7c014de3e4865 /src
parentc36d6eefaef62290312fb5e1f6f53ec163551d82 (diff)
downloadandroid_packages_apps_Trebuchet-a1b4911e2606c5b9f36d0692f0bd0856c6e24683.tar.gz
android_packages_apps_Trebuchet-a1b4911e2606c5b9f36d0692f0bd0856c6e24683.tar.bz2
android_packages_apps_Trebuchet-a1b4911e2606c5b9f36d0692f0bd0856c6e24683.zip
Synchronizing loader preload to avoid launcher getting stuck in loading state,
which could be caused by the following sequence of events 1) Starts preload => execution moved to background thread a) check if loader is running ... execution moved to ui thread 2) Launcher starts 3) Cancels any running loader and starts a new loader .... Execution on background thread b) Cancels any running loader and starts a new loader Synchronizing (3), and [a, b] under same lock would avoid this case Bug: 73399920 Change-Id: I6b01f797fd6f4a2e5b3c078bb374ad40fcc311c8
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/LauncherModel.java9
-rw-r--r--src/com/android/launcher3/model/ModelPreload.java7
2 files changed, 11 insertions, 5 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 929606e4a..a4d188f15 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -493,6 +493,15 @@ public class LauncherModel extends BroadcastReceiver
}
}
+ public void startLoaderForResultsIfNotLoaded(LoaderResults results) {
+ synchronized (mLock) {
+ if (!isModelLoaded()) {
+ Log.d(TAG, "Workspace not loaded, loading now");
+ startLoaderForResults(results);
+ }
+ }
+ }
+
/**
* Loads the workspace screen ids in an ordered list.
*/
diff --git a/src/com/android/launcher3/model/ModelPreload.java b/src/com/android/launcher3/model/ModelPreload.java
index 6f33bedb0..f186e9572 100644
--- a/src/com/android/launcher3/model/ModelPreload.java
+++ b/src/com/android/launcher3/model/ModelPreload.java
@@ -49,11 +49,8 @@ public class ModelPreload implements ModelUpdateTask {
@Override
public final void run() {
- if (!mModel.isModelLoaded()) {
- Log.d(TAG, "Workspace not loaded, loading now");
- mModel.startLoaderForResults(
- new LoaderResults(mApp, mBgDataModel, mAllAppsList, 0, null));
- }
+ mModel.startLoaderForResultsIfNotLoaded(
+ new LoaderResults(mApp, mBgDataModel, mAllAppsList, 0, null));
Log.d(TAG, "Preload completed : " + mModel.isModelLoaded());
onComplete(mModel.isModelLoaded());
}