summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2013-08-30 14:11:37 -0700
committerWinson Chung <winsonc@google.com>2013-08-30 14:15:17 -0700
commitba9c37f41c41121a38d5a52232953d4b103e9471 (patch)
tree1c5bdea0ea0daa7cdde8b64c82e4133afab25d4a /src
parent5e2ceef114cc9fdca6989d8511932e666925f749 (diff)
downloadandroid_packages_apps_Trebuchet-ba9c37f41c41121a38d5a52232953d4b103e9471.tar.gz
android_packages_apps_Trebuchet-ba9c37f41c41121a38d5a52232953d4b103e9471.tar.bz2
android_packages_apps_Trebuchet-ba9c37f41c41121a38d5a52232953d4b103e9471.zip
Fixing missing workspace screens. (Bug 10512285)
- Also skipping apps that are disabled (Regression, Bug 10444606) Change-Id: I175d0188615cbd378166e14ac2f7afb6295fe886
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/LauncherModel.java73
1 files changed, 51 insertions, 22 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 8ca580ace..1c98522bc 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -1014,19 +1014,21 @@ public class LauncherModel extends BroadcastReceiver {
}
cr.bulkInsert(uri, values);
- // Dump the sBgWorkspaceScreens
- Launcher.addDumpLog(TAG, "10249126 - updateWorkspaceScreenOrder - sBgWorkspaceScreens - pre clear", true);
- for (Long l : sBgWorkspaceScreens) {
- Launcher.addDumpLog(TAG, "10249126\t- " + l, true);
- }
+ synchronized (sBgLock) {
+ // Dump the sBgWorkspaceScreens
+ Launcher.addDumpLog(TAG, "10249126 - updateWorkspaceScreenOrder - sBgWorkspaceScreens - pre clear", true);
+ for (Long l : sBgWorkspaceScreens) {
+ Launcher.addDumpLog(TAG, "10249126\t- " + l, true);
+ }
- sBgWorkspaceScreens.clear();
- sBgWorkspaceScreens.addAll(screensCopy);
+ sBgWorkspaceScreens.clear();
+ sBgWorkspaceScreens.addAll(screensCopy);
- // Dump the sBgWorkspaceScreens
- Launcher.addDumpLog(TAG, "10249126 - updateWorkspaceScreenOrder - sBgWorkspaceScreens - post clear", true);
- for (Long l : sBgWorkspaceScreens) {
- Launcher.addDumpLog(TAG, "10249126\t- " + l, true);
+ // Dump the sBgWorkspaceScreens
+ Launcher.addDumpLog(TAG, "10249126 - updateWorkspaceScreenOrder - sBgWorkspaceScreens - post clear", true);
+ for (Long l : sBgWorkspaceScreens) {
+ Launcher.addDumpLog(TAG, "10249126\t- " + l, true);
+ }
}
}
};
@@ -1272,7 +1274,7 @@ public class LauncherModel extends BroadcastReceiver {
orderedScreens.put(rank, screenId);
} catch (Exception e) {
- Log.w(TAG, "Desktop items loading interrupted - invalid screens: ", e);
+ Launcher.addDumpLog(TAG, "Desktop items loading interrupted - invalid screens: " + e, true);
}
}
} finally {
@@ -1337,6 +1339,7 @@ public class LauncherModel extends BroadcastReceiver {
isUpgradePath = loadWorkspace();
synchronized (LoaderTask.this) {
if (mStopped) {
+ Launcher.addDumpLog(TAG, "10249126 - loadAndBindWorkspace() stopped", true);
return isUpgradePath;
}
mWorkspaceLoaded = true;
@@ -1498,6 +1501,7 @@ public class LauncherModel extends BroadcastReceiver {
public void stopLocked() {
synchronized (LoaderTask.this) {
+ Launcher.addDumpLog(TAG, "10249126 - STOPPED", true);
mStopped = true;
this.notify();
}
@@ -1622,6 +1626,18 @@ public class LauncherModel extends BroadcastReceiver {
return true;
}
+ /** Clears all the sBg data structures */
+ private void clearSBgDataStructures() {
+ synchronized (sBgLock) {
+ sBgWorkspaceItems.clear();
+ sBgAppWidgets.clear();
+ sBgFolders.clear();
+ sBgItemsIdMap.clear();
+ sBgDbIconCache.clear();
+ sBgWorkspaceScreens.clear();
+ }
+ }
+
/** Returns whether this is an upgradge path */
private boolean loadWorkspace() {
final long t = DEBUG_LOADERS ? SystemClock.uptimeMillis() : 0;
@@ -1644,12 +1660,7 @@ public class LauncherModel extends BroadcastReceiver {
boolean loadedOldDb = LauncherAppState.getLauncherProvider().justLoadedOldDb();
synchronized (sBgLock) {
- sBgWorkspaceItems.clear();
- sBgAppWidgets.clear();
- sBgFolders.clear();
- sBgItemsIdMap.clear();
- sBgDbIconCache.clear();
- sBgWorkspaceScreens.clear();
+ clearSBgDataStructures();
Launcher.addDumpLog(TAG, "10249126 - loadWorkspace()", true);
final ArrayList<Long> itemsToRemove = new ArrayList<Long>();
@@ -1701,6 +1712,7 @@ public class LauncherModel extends BroadcastReceiver {
long id;
Intent intent;
+ Launcher.addDumpLog(TAG, "10249126 - Num rows: " + c.getCount(), true);
while (!mStopped && c.moveToNext()) {
try {
int itemType = c.getInt(itemTypeIndex);
@@ -1890,7 +1902,7 @@ public class LauncherModel extends BroadcastReceiver {
break;
}
} catch (Exception e) {
- Log.w(TAG, "Desktop items loading interrupted:", e);
+ Launcher.addDumpLog(TAG, "Desktop items loading interrupted: " + e, true);
}
}
} finally {
@@ -1899,6 +1911,13 @@ public class LauncherModel extends BroadcastReceiver {
}
}
+ // Break early if we've stopped loading
+ if (mStopped) {
+ Launcher.addDumpLog(TAG, "10249126 - loadWorkspace() - Stopped", true);
+ clearSBgDataStructures();
+ return false;
+ }
+
if (itemsToRemove.size() > 0) {
ContentProviderClient client = contentResolver.acquireContentProviderClient(
LauncherSettings.Favorites.CONTENT_URI);
@@ -2150,9 +2169,11 @@ public class LauncherModel extends BroadcastReceiver {
Launcher.addDumpLog(TAG, "10249126 - bindWorkspaceScreens()", true);
// Dump the orderedScreens
- Launcher.addDumpLog(TAG, "10249126 - orderedScreens", true);
- for (Long l : sBgWorkspaceScreens) {
- Launcher.addDumpLog(TAG, "10249126\t- " + l, true);
+ synchronized (sBgLock) {
+ Launcher.addDumpLog(TAG, "10249126 - orderedScreens", true);
+ for (Long l : sBgWorkspaceScreens) {
+ Launcher.addDumpLog(TAG, "10249126\t- " + l, true);
+ }
}
final Runnable r = new Runnable() {
@@ -2238,6 +2259,7 @@ public class LauncherModel extends BroadcastReceiver {
* Binds all loaded data to actual views on the main thread.
*/
private void bindWorkspace(int synchronizeBindPage, final boolean isUpgradePath) {
+ Launcher.addDumpLog(TAG, "10249126 - bindWorkspace(" + synchronizeBindPage + ", " + isUpgradePath + ")", true);
final long t = SystemClock.uptimeMillis();
Runnable r;
@@ -2666,6 +2688,13 @@ public class LauncherModel extends BroadcastReceiver {
}
try {
+ // Skip if the application is disabled
+ PackageInfo pi = pm.getPackageInfo(cn.getPackageName(), 0);
+ if (!pi.applicationInfo.enabled) {
+ return false;
+ }
+
+ // Check the activity
return (pm.getActivityInfo(cn, 0) != null);
} catch (NameNotFoundException e) {
return false;