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

Commit 845a0053 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "unite all locks under BroadcastRadio" into sc-v2-dev

parents e266d53a 8e8bc5bf
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ public class StartProgramListUpdatesFanoutTest {
    @Mock ITunerSession mHalTunerSessionMock;
    private android.hardware.radio.ITunerCallback[] mAidlTunerCallbackMocks;

    private final Object mLock = new Object();
    // RadioModule under test
    private RadioModule mRadioModule;

@@ -96,7 +97,7 @@ public class StartProgramListUpdatesFanoutTest {

        mRadioModule = new RadioModule(mBroadcastRadioMock, new RadioManager.ModuleProperties(0, "",
                  0, "", "", "", "", 0, 0, false, false, null, false, new int[] {}, new int[] {},
                  null, null));
                  null, null), mLock);

        doAnswer((Answer) invocation -> {
            mHalTunerCallback = (ITunerCallback) invocation.getArguments()[0];
+3 −3
Original line number Diff line number Diff line
@@ -52,11 +52,11 @@ public class BroadcastRadioService extends SystemService {
    public BroadcastRadioService(Context context) {
        super(context);

        mHal1 = new com.android.server.broadcastradio.hal1.BroadcastRadioService();
        mHal1 = new com.android.server.broadcastradio.hal1.BroadcastRadioService(mLock);
        mV1Modules = mHal1.loadModules();
        OptionalInt max = mV1Modules.stream().mapToInt(RadioManager.ModuleProperties::getId).max();
        mHal2 = new com.android.server.broadcastradio.hal2.BroadcastRadioService(
                max.isPresent() ? max.getAsInt() + 1 : 0);
                max.isPresent() ? max.getAsInt() + 1 : 0, mLock);
    }

    @Override
@@ -111,7 +111,7 @@ public class BroadcastRadioService extends SystemService {
            synchronized (mLock) {
                if (!mHal2.hasAnyModules()) {
                    Slog.i(TAG, "There are no HAL 2.x modules registered");
                    return new AnnouncementAggregator(listener);
                    return new AnnouncementAggregator(listener, mLock);
                }

                return mHal2.addAnnouncementListener(enabledTypes, listener);
+9 −8
Original line number Diff line number Diff line
@@ -17,16 +17,9 @@
package com.android.server.broadcastradio.hal1;

import android.annotation.NonNull;
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.radio.IRadioService;
import android.hardware.radio.ITuner;
import android.hardware.radio.ITunerCallback;
import android.hardware.radio.RadioManager;
import android.os.ParcelableException;

import com.android.server.SystemService;

import java.util.List;
import java.util.Objects;
@@ -37,7 +30,7 @@ public class BroadcastRadioService {
     */
    private final long mNativeContext = nativeInit();

    private final Object mLock = new Object();
    private final Object mLock;

    @Override
    protected void finalize() throws Throwable {
@@ -51,6 +44,14 @@ public class BroadcastRadioService {
    private native Tuner nativeOpenTuner(long nativeContext, int moduleId,
            RadioManager.BandConfig config, boolean withAudio, ITunerCallback callback);

    /**
     * Constructor. should pass
     * {@code com.android.server.broadcastradio.BroadcastRadioService#mLock} for lock.
     */
    public BroadcastRadioService(@NonNull Object lock) {
        mLock = lock;
    }

    public @NonNull List<RadioManager.ModuleProperties> loadModules() {
        synchronized (mLock) {
            return Objects.requireNonNull(nativeLoadModules(mNativeContext));
+3 −2
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ import java.util.Objects;
public class AnnouncementAggregator extends ICloseHandle.Stub {
    private static final String TAG = "BcRadio2Srv.AnnAggr";

    private final Object mLock = new Object();
    private final Object mLock;
    @NonNull private final IAnnouncementListener mListener;
    private final IBinder.DeathRecipient mDeathRecipient = new DeathRecipient();

@@ -45,8 +45,9 @@ public class AnnouncementAggregator extends ICloseHandle.Stub {
    @GuardedBy("mLock")
    private boolean mIsClosed = false;

    public AnnouncementAggregator(@NonNull IAnnouncementListener listener) {
    public AnnouncementAggregator(@NonNull IAnnouncementListener listener, @NonNull Object lock) {
        mListener = Objects.requireNonNull(listener);
        mLock = Objects.requireNonNull(lock);
        try {
            listener.asBinder().linkToDeath(mDeathRecipient, 0);
        } catch (RemoteException ex) {
+5 −4
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ import java.util.stream.Collectors;
public class BroadcastRadioService {
    private static final String TAG = "BcRadio2Srv";

    private final Object mLock = new Object();
    private final Object mLock;

    @GuardedBy("mLock")
    private int mNextModuleId = 0;
@@ -68,7 +68,7 @@ public class BroadcastRadioService {
                    moduleId = mNextModuleId;
                }

                RadioModule module = RadioModule.tryLoadingModule(moduleId, serviceName);
                RadioModule module = RadioModule.tryLoadingModule(moduleId, serviceName, mLock);
                if (module == null) {
                    return;
                }
@@ -116,8 +116,9 @@ public class BroadcastRadioService {
        }
    };

    public BroadcastRadioService(int nextModuleId) {
    public BroadcastRadioService(int nextModuleId, Object lock) {
        mNextModuleId = nextModuleId;
        mLock = lock;
        try {
            IServiceManager manager = IServiceManager.getService();
            if (manager == null) {
@@ -174,7 +175,7 @@ public class BroadcastRadioService {

    public ICloseHandle addAnnouncementListener(@NonNull int[] enabledTypes,
            @NonNull IAnnouncementListener listener) {
        AnnouncementAggregator aggregator = new AnnouncementAggregator(listener);
        AnnouncementAggregator aggregator = new AnnouncementAggregator(listener, mLock);
        boolean anySupported = false;
        synchronized (mLock) {
            for (RadioModule module : mModules.values()) {
Loading