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

Commit d0c78f9f authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

Fix empty program list filter handling.

Also, fix some minor issues about program list fetching.

Test: manual
Bug: 74353024
Change-Id: I77546b806f2d9de9505e64335af47e99079cea3e
parent 9ed9aa93
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -260,6 +260,17 @@ public final class ProgramList implements AutoCloseable {
            mVendorFilter = null;
        }

        /**
         * @hide for framework use only
         */
        public Filter() {
            mIdentifierTypes = Collections.emptySet();
            mIdentifiers = Collections.emptySet();
            mIncludeCategories = false;
            mExcludeModifications = false;
            mVendorFilter = null;
        }

        /**
         * @hide for framework use only
         */
+2 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ class TunerAdapter extends RadioTuner {
                mLegacyListProxy.close();
                mLegacyListProxy = null;
            }
            mCallback.close();
        }
        try {
            mTuner.close();
@@ -278,6 +279,7 @@ class TunerAdapter extends RadioTuner {
            try {
                mTuner.startProgramListUpdates(filter);
            } catch (UnsupportedOperationException ex) {
                Log.i(TAG, "Program list is not supported with this hardware");
                return null;
            } catch (RemoteException ex) {
                mCallback.setProgramListObserver(null, () -> { });
+6 −0
Original line number Diff line number Diff line
@@ -53,6 +53,12 @@ class TunerCallbackAdapter extends ITunerCallback.Stub {
        }
    }

    void close() {
        synchronized (mLock) {
            if (mProgramList != null) mProgramList.close();
        }
    }

    void setProgramListObserver(@Nullable ProgramList programList,
            @NonNull ProgramList.OnCloseListener closeListener) {
        Objects.requireNonNull(closeListener);
+4 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.broadcastradio.hal1;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.hardware.radio.ITuner;
import android.hardware.radio.ITunerCallback;
import android.hardware.radio.ProgramList;
@@ -87,8 +88,9 @@ class TunerCallback implements ITunerCallback {
        mTuner.close();
    }

    void startProgramListUpdates(@NonNull ProgramList.Filter filter) {
        mProgramListFilter.set(Objects.requireNonNull(filter));
    void startProgramListUpdates(@Nullable ProgramList.Filter filter) {
        if (filter == null) filter = new ProgramList.Filter();
        mProgramListFilter.set(filter);
        sendProgramListUpdate();
    }

+3 −1
Original line number Diff line number Diff line
@@ -375,7 +375,9 @@ class Convert {
        );
    }

    static @NonNull ProgramFilter programFilterToHal(@NonNull ProgramList.Filter filter) {
    static @NonNull ProgramFilter programFilterToHal(@Nullable ProgramList.Filter filter) {
        if (filter == null) filter = new ProgramList.Filter();

        ProgramFilter hwFilter = new ProgramFilter();

        filter.getIdentifierTypes().stream().forEachOrdered(hwFilter.identifierTypes::add);