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

Commit d161c060 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Remove stale weak reference to Filter" into sc-dev am: c8c9f874

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13498282

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I8451806b59be4ab3eb524c5cedd8b28b74020f79
parents adc16a13 c8c9f874
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -245,6 +246,8 @@ public class Tuner implements AutoCloseable {
    private static final int MSG_ON_FILTER_STATUS = 3;
    private static final int MSG_ON_LNB_EVENT = 4;

    private static final int FILTER_CLEANUP_THRESHOLD = 256;

    /** @hide */
    @IntDef(prefix = "DVR_TYPE_", value = {DVR_TYPE_RECORD, DVR_TYPE_PLAYBACK})
    @Retention(RetentionPolicy.SOURCE)
@@ -1208,6 +1211,15 @@ public class Tuner implements AutoCloseable {
            synchronized (mFilters) {
                WeakReference<Filter> weakFilter = new WeakReference<Filter>(filter);
                mFilters.add(weakFilter);
                if (mFilters.size() > FILTER_CLEANUP_THRESHOLD) {
                    Iterator<WeakReference<Filter>> iterator = mFilters.iterator();
                    while (iterator.hasNext()) {
                        WeakReference<Filter> wFilter = iterator.next();
                        if (wFilter.get() == null) {
                            iterator.remove();
                        }
                    }
                }
            }
        }
        return filter;