mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 03:08:19 +00:00
Make sure the workspace screens don't get updated while workspace is loading
-> Found another path that could lead to the same issue [add shortcut with config activity to an existing folder, when config activity launches, kill launcher, configure shortcut. observe crash and data loss]. -> Plugged up above, and a couple other potential holes -> Initial fix probably took care of the main issue Issue 12523285 Change-Id: I29db9da4af4a8bf22047eb46bd49354447d04b8d
This commit is contained in:
@@ -696,6 +696,12 @@ public class Workspace extends SmoothPagedView
|
||||
// Log to disk
|
||||
Launcher.addDumpLog(TAG, "11683562 - convertFinalScreenToEmptyScreenIfNecessary()", true);
|
||||
|
||||
if (mLauncher.isWorkspaceLoading()) {
|
||||
// Invalid and dangerous operation if workspace is loading
|
||||
Launcher.addDumpLog(TAG, " - workspace loading, skip", true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (hasExtraEmptyScreen() || mScreenOrder.size() == 0) return;
|
||||
long finalScreenId = mScreenOrder.get(mScreenOrder.size() - 1);
|
||||
|
||||
@@ -726,6 +732,12 @@ public class Workspace extends SmoothPagedView
|
||||
final int delay, final boolean stripEmptyScreens) {
|
||||
// Log to disk
|
||||
Launcher.addDumpLog(TAG, "11683562 - removeExtraEmptyScreen()", true);
|
||||
if (mLauncher.isWorkspaceLoading()) {
|
||||
// Don't strip empty screens if the workspace is still loading
|
||||
Launcher.addDumpLog(TAG, " - workspace loading, skip", true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (delay > 0) {
|
||||
postDelayed(new Runnable() {
|
||||
@Override
|
||||
@@ -810,6 +822,11 @@ public class Workspace extends SmoothPagedView
|
||||
public long commitExtraEmptyScreen() {
|
||||
// Log to disk
|
||||
Launcher.addDumpLog(TAG, "11683562 - commitExtraEmptyScreen()", true);
|
||||
if (mLauncher.isWorkspaceLoading()) {
|
||||
// Invalid and dangerous operation if workspace is loading
|
||||
Launcher.addDumpLog(TAG, " - workspace loading, skip", true);
|
||||
return -1;
|
||||
}
|
||||
|
||||
int index = getPageIndexForScreenId(EXTRA_EMPTY_SCREEN_ID);
|
||||
CellLayout cl = mWorkspaceScreens.get(EXTRA_EMPTY_SCREEN_ID);
|
||||
@@ -867,7 +884,8 @@ public class Workspace extends SmoothPagedView
|
||||
Launcher.addDumpLog(TAG, "11683562 - stripEmptyScreens()", true);
|
||||
|
||||
if (mLauncher.isWorkspaceLoading()) {
|
||||
// Don't strip empty screens if the workspace is still loading
|
||||
// Don't strip empty screens if the workspace is still loading.
|
||||
// This is dangerous and can result in data loss.
|
||||
Launcher.addDumpLog(TAG, " - workspace loading, skip", true);
|
||||
return;
|
||||
}
|
||||
@@ -2022,6 +2040,11 @@ public class Workspace extends SmoothPagedView
|
||||
protected void onEndReordering() {
|
||||
super.onEndReordering();
|
||||
|
||||
if (mLauncher.isWorkspaceLoading()) {
|
||||
// Invalid and dangerous operation if workspace is loading
|
||||
return;
|
||||
}
|
||||
|
||||
hideOutlines();
|
||||
mScreenOrder.clear();
|
||||
int count = getChildCount();
|
||||
|
||||
Reference in New Issue
Block a user