Merge "Fix empty program list filter handling." into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7a33063b39
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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, () -> { });
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user