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

Commit 8f70a3a4 authored by Weilin Xu's avatar Weilin Xu Committed by Android (Google) Code Review
Browse files

Merge "Fix purge bug for program list update" into tm-qpr-dev

parents 31f6e65c db8579ff
Loading
Loading
Loading
Loading
+11 −4
Original line number Original line Diff line number Diff line
@@ -22,10 +22,11 @@ import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.Parcelable;
import android.util.ArrayMap;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.List;
import java.util.Map;
import java.util.Map;
import java.util.Objects;
import java.util.Objects;
@@ -41,7 +42,7 @@ public final class ProgramList implements AutoCloseable {


    private final Object mLock = new Object();
    private final Object mLock = new Object();
    private final Map<ProgramSelector.Identifier, RadioManager.ProgramInfo> mPrograms =
    private final Map<ProgramSelector.Identifier, RadioManager.ProgramInfo> mPrograms =
            new HashMap<>();
            new ArrayMap<>();


    private final List<ListCallback> mListCallbacks = new ArrayList<>();
    private final List<ListCallback> mListCallbacks = new ArrayList<>();
    private final List<OnCompleteListener> mOnCompleteListeners = new ArrayList<>();
    private final List<OnCompleteListener> mOnCompleteListeners = new ArrayList<>();
@@ -184,8 +185,14 @@ public final class ProgramList implements AutoCloseable {
            listCallbacksCopied = new ArrayList<>(mListCallbacks);
            listCallbacksCopied = new ArrayList<>(mListCallbacks);


            if (chunk.isPurge()) {
            if (chunk.isPurge()) {
                for (ProgramSelector.Identifier id : mPrograms.keySet()) {
                Iterator<Map.Entry<ProgramSelector.Identifier, RadioManager.ProgramInfo>>
                    removeLocked(id, removedList);
                        programsIterator = mPrograms.entrySet().iterator();
                while (programsIterator.hasNext()) {
                    RadioManager.ProgramInfo removed = programsIterator.next().getValue();
                    if (removed != null) {
                        removedList.add(removed.getSelector().getPrimaryId());
                    }
                    programsIterator.remove();
                }
                }
            }
            }