Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dcb173d0 authored by Adam Cohen's avatar Adam Cohen
Browse files

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
parent 8440e7ce
Loading
Loading
Loading
Loading
+24 −1
Original line number Diff line number Diff line
@@ -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();