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

Commit 5294870c authored by Galia Peycheva's avatar Galia Peycheva Committed by Automerger Merge Worker
Browse files

Merge "Handle dream restart" into tm-qpr-dev am: 9d37599d

parents 6514fecd 9d37599d
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Objects;

/**
 * Internal controller for starting and stopping the current dream and managing related state.
@@ -119,10 +120,20 @@ final class DreamController {
                    + ", isPreviewMode=" + isPreviewMode + ", canDoze=" + canDoze
                    + ", userId=" + userId + ", reason='" + reason + "'");

            if (mCurrentDream != null) {
                mPreviousDreams.add(mCurrentDream);
            }
            final DreamRecord oldDream = mCurrentDream;
            mCurrentDream = new DreamRecord(token, name, isPreviewMode, canDoze, userId, wakeLock);
            if (oldDream != null) {
                if (!oldDream.mWakingGently) {
                    // We will stop these previous dreams once the new dream is started.
                    mPreviousDreams.add(oldDream);
                } else if (Objects.equals(oldDream.mName, mCurrentDream.mName)) {
                    // We are attempting to start a dream that is currently waking up gently.
                    // Let's silently stop the old instance here to clear the dream state.
                    // This should happen after the new mCurrentDream is set to avoid announcing
                    // a "dream stopped" state.
                    stopDreamInstance(/* immediately */ true, "restarting same dream", oldDream);
                }
            }

            mCurrentDream.mDreamStartTime = SystemClock.elapsedRealtime();
            MetricsLogger.visible(mContext,