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

Commit a8971c14 authored by Winson Chung's avatar Winson Chung
Browse files

Copy resume callbacks list prior to making callbacks

- Starting a deferred activity can trigger a new callback to be added
  to the list while we are iterating it

Bug: 136613192
Change-Id: I6690ab0695bb73f11bf343fb41e9fc86b4afec1b
Merged-In: I6690ab0695bb73f11bf343fb41e9fc86b4afec1b
(cherry picked from commit 940b0ac0)
parent bc278264
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -952,10 +952,14 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
        mHandler.removeCallbacks(mHandleDeferredResume);
        Utilities.postAsyncCallback(mHandler, mHandleDeferredResume);

        for (OnResumeCallback cb : mOnResumeCallbacks) {
            cb.onLauncherResume();
        }
        if (!mOnResumeCallbacks.isEmpty()) {
            final ArrayList<OnResumeCallback> resumeCallbacks = new ArrayList<>(mOnResumeCallbacks);
            mOnResumeCallbacks.clear();
            for (int i = resumeCallbacks.size() - 1; i >= 0; i--) {
                resumeCallbacks.get(i).onLauncherResume();
            }
            resumeCallbacks.clear();
        }

        if (mLauncherCallbacks != null) {
            mLauncherCallbacks.onResume();