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

Commit b050ab8a authored by Jerry Chang's avatar Jerry Chang
Browse files

Prevent dream service finishSelf before it was attached

Bring back stopSelf logic to prevent dream service finishSelf before any
token attached.

Fix: 150818348
Test: manual test, won't throw exp while leaving dream service.
Merged-In: I31bb4f32013b9fa0aa2263b94117060e4d3a7341
Change-Id: I31bb4f32013b9fa0aa2263b94117060e4d3a7341
parent 97a8c8a1
Loading
Loading
Loading
Loading
+17 −12
Original line number Diff line number Diff line
@@ -906,15 +906,21 @@ public class DreamService extends Service implements Window.Callback {
            if (!mActivity.isFinishing()) {
                // In case the activity is not finished yet, do it now.
                mActivity.finishAndRemoveTask();
                return;
            }
        } else if (!mWindowless) {
            Slog.w(TAG, "Finish was called before the dream was attached.");
            return;
        }

        if (!mFinished) {
        if (mFinished) {
            return;
        }
        mFinished = true;

        if (mDreamToken == null) {
            Slog.w(TAG, "Finish was called before the dream was attached.");
            stopSelf();
            return;
        }

        try {
            // finishSelf will unbind the dream controller from the dream service. This will
            // trigger DreamService.this.onDestroy and DreamService.this will die.
@@ -923,7 +929,6 @@ public class DreamService extends Service implements Window.Callback {
            // system server died
        }
    }
    }

    /**
     * Wakes the dream up gently.