Loading core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/StartProgramListUpdatesFanoutTest.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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]; Loading services/core/java/com/android/server/broadcastradio/BroadcastRadioService.java +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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); Loading services/core/java/com/android/server/broadcastradio/hal1/BroadcastRadioService.java +9 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 { Loading @@ -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)); Loading services/core/java/com/android/server/broadcastradio/hal2/AnnouncementAggregator.java +3 −2 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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) { Loading services/core/java/com/android/server/broadcastradio/hal2/BroadcastRadioService.java +5 −4 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; } Loading Loading @@ -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) { Loading Loading @@ -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 Loading
core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/StartProgramListUpdatesFanoutTest.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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]; Loading
services/core/java/com/android/server/broadcastradio/BroadcastRadioService.java +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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); Loading
services/core/java/com/android/server/broadcastradio/hal1/BroadcastRadioService.java +9 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 { Loading @@ -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)); Loading
services/core/java/com/android/server/broadcastradio/hal2/AnnouncementAggregator.java +3 −2 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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) { Loading
services/core/java/com/android/server/broadcastradio/hal2/BroadcastRadioService.java +5 −4 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; } Loading Loading @@ -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) { Loading Loading @@ -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