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

Commit 08ad1537 authored by Marco Ballesio's avatar Marco Ballesio Committed by Android (Google) Code Review
Browse files

Merge "BroadcastQueue: temporarily unfreeze for parallel broadcasts"

parents 4cfdb5cc 8bab7db6
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -798,7 +798,10 @@ public final class BroadcastQueue {
                mService.updateOomAdjPendingTargetsLocked(
                        OomAdjuster.OOM_ADJ_REASON_START_RECEIVER);
            }
        } else if (filter.receiverList.app != null) {
            mService.mOomAdjuster.mCachedAppOptimizer.unfreezeTemporarily(filter.receiverList.app);
        }

        try {
            if (DEBUG_BROADCAST_LIGHT) Slog.i(TAG_BROADCAST,
                    "Delivering to " + filter + " : " + r);
@@ -1132,6 +1135,10 @@ public final class BroadcastQueue {
                        }
                    }
                    if (sendResult) {
                        if (r.callerApp != null) {
                            mService.mOomAdjuster.mCachedAppOptimizer.unfreezeTemporarily(
                                    r.callerApp);
                        }
                        try {
                            if (DEBUG_BROADCAST) {
                                Slog.i(TAG_BROADCAST, "Finishing broadcast [" + mQueueName + "] "
+10 −0
Original line number Diff line number Diff line
@@ -720,6 +720,16 @@ public final class CachedAppOptimizer {
        }
    }

    // This will ensure app will be out of the freezer for at least FREEZE_TIMEOUT_MS
    void unfreezeTemporarily(ProcessRecord app) {
        synchronized (mAm) {
            if (app.frozen) {
                unfreezeAppLocked(app);
                freezeAppAsync(app);
            }
        }
    }

    @GuardedBy("mAm")
    void freezeAppAsync(ProcessRecord app) {
        mFreezeHandler.removeMessages(SET_FROZEN_PROCESS_MSG, app);