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

Commit 99ef2c4f authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Android (Google) Code Review
Browse files

Merge "Merge "freezer: don't allocate stats on unfreeze" into rvc-dev am:...

Merge "Merge "freezer: don't allocate stats on unfreeze" into rvc-dev am: 3e55a735 am: b33d1eeb" into rvc-d1-dev-plus-aosp
parents 51c7cc0e f10967dc
Loading
Loading
Loading
Loading
+22 −41
Original line number Diff line number Diff line
@@ -121,6 +121,7 @@ public final class CachedAppOptimizer {
    static final int COMPACT_PROCESS_MSG = 1;
    static final int COMPACT_SYSTEM_MSG = 2;
    static final int SET_FROZEN_PROCESS_MSG = 3;
    static final int REPORT_UNFREEZE_MSG = 4;

    //TODO:change this static definition into a configurable flag.
    static final int FREEZE_TIMEOUT_MS = 500;
@@ -613,30 +614,6 @@ public final class CachedAppOptimizer {
                FREEZE_TIMEOUT_MS);
    }

    private final class UnfreezeStats {
        final int mPid;
        final String mName;
        final long mFrozenDuration;

        UnfreezeStats(int pid, String name, long frozenDuration) {
            mPid = pid;
            mName = name;
            mFrozenDuration = frozenDuration;
        }

        public int getPid() {
            return mPid;
        }

        public String getName() {
            return mName;
        }

        public long getFrozenDuration() {
            return mFrozenDuration;
        }
    }

    @GuardedBy("mAm")
    void unfreezeAppLocked(ProcessRecord app) {
        mFreezeHandler.removeMessages(SET_FROZEN_PROCESS_MSG, app);
@@ -667,12 +644,11 @@ public final class CachedAppOptimizer {
                Slog.d(TAG_AM, "sync unfroze " + app.pid + " " + app.processName);
            }

            UnfreezeStats stats = new UnfreezeStats(app.pid, app.processName,
                    app.freezeUnfreezeTime - freezeTime);

            mFreezeHandler.sendMessage(
                    mFreezeHandler.obtainMessage(SET_FROZEN_PROCESS_MSG, REPORT_UNFREEZE, 0,
                        stats));
                    mFreezeHandler.obtainMessage(REPORT_UNFREEZE_MSG,
                        app.pid,
                        (int) Math.min(app.freezeUnfreezeTime - freezeTime, Integer.MAX_VALUE),
                        app.processName));
        }
    }

@@ -945,14 +921,19 @@ public final class CachedAppOptimizer {

        @Override
        public void handleMessage(Message msg) {
            if (msg.what != SET_FROZEN_PROCESS_MSG) {
                return;
            }

            if (msg.arg1 == DO_FREEZE) {
            switch (msg.what) {
                case SET_FROZEN_PROCESS_MSG:
                    freezeProcess((ProcessRecord) msg.obj);
            } else if (msg.arg1 == REPORT_UNFREEZE) {
                reportUnfreeze((UnfreezeStats) msg.obj);
                    break;
                case REPORT_UNFREEZE_MSG:
                    int pid = msg.arg1;
                    int frozenDuration = msg.arg2;
                    String processName = (String) msg.obj;

                    reportUnfreeze(pid, frozenDuration, processName);
                    break;
                default:
                    return;
            }
        }

@@ -1015,18 +996,18 @@ public final class CachedAppOptimizer {
            }
        }

        private void reportUnfreeze(UnfreezeStats stats) {
        private void reportUnfreeze(int pid, int frozenDuration, String processName) {

            EventLog.writeEvent(EventLogTags.AM_UNFREEZE, stats.getPid(), stats.getName());
            EventLog.writeEvent(EventLogTags.AM_UNFREEZE, pid, processName);

            // See above for why we're not taking mPhenotypeFlagLock here
            if (mRandom.nextFloat() < mFreezerStatsdSampleRate) {
                FrameworkStatsLog.write(
                        FrameworkStatsLog.APP_FREEZE_CHANGED,
                        FrameworkStatsLog.APP_FREEZE_CHANGED__ACTION__UNFREEZE_APP,
                        stats.getPid(),
                        stats.getName(),
                        stats.getFrozenDuration());
                        pid,
                        processName,
                        frozenDuration);
            }
        }
    }