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

Commit c54d3189 authored by William Escande's avatar William Escande
Browse files

ScanManager: Don't quit a looper given in parameter

Bug: 330956986
Fix: 379003858
Test: atest ScanManagerTest --rerun-until-failure 3000
Flag: Exempt refactor
Change-Id: I738c88aa561791ffe27bd8a004f6d69fe79c281e
parent de766919
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -183,6 +183,7 @@ public class GattService extends ProfileService {
    private final DistanceMeasurementManager mDistanceMeasurementManager;
    private final ActivityManager mActivityManager;
    private final PackageManager mPackageManager;
    private final HandlerThread mScanThread;

    private Handler mTestModeHandler;

@@ -203,9 +204,11 @@ public class GattService extends ProfileService {
        mAdvertiseManager = new AdvertiseManager(this);

        if (!Flags.scanManagerRefactor()) {
            HandlerThread thread = new HandlerThread("BluetoothScanManager");
            thread.start();
            mTransitionalScanHelper.start(thread.getLooper());
            mScanThread = new HandlerThread("BluetoothScanManager");
            mScanThread.start();
            mTransitionalScanHelper.start(mScanThread.getLooper());
        } else {
            mScanThread = null;
        }
        mDistanceMeasurementManager =
                GattObjectsFactory.getInstance().createDistanceMeasurementManager(mAdapterService);
@@ -251,6 +254,9 @@ public class GattService extends ProfileService {
    @Override
    public void cleanup() {
        Log.d(TAG, "cleanup()");
        if (!Flags.scanManagerRefactor()) {
            mScanThread.quitSafely();
        }
        mNativeInterface.cleanup();
        mAdvertiseManager.cleanup();
        mDistanceMeasurementManager.cleanup();
+5 −3
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ public class ScanController {
    private static final String TAG = ScanController.class.getSimpleName();

    public final TransitionalScanHelper mTransitionalScanHelper;
    public final HandlerThread mScanThread;

    private final BluetoothScanBinder mBinder;

@@ -72,15 +73,16 @@ public class ScanController {
        mMainLooper = adapterService.getMainLooper();
        mBinder = new BluetoothScanBinder(this);
        mIsAvailable = true;
        HandlerThread thread = new HandlerThread("BluetoothScanManager");
        thread.start();
        mTransitionalScanHelper.start(thread.getLooper());
        mScanThread = new HandlerThread("BluetoothScanManager");
        mScanThread.start();
        mTransitionalScanHelper.start(mScanThread.getLooper());
    }

    public void stop() {
        Log.d(TAG, "stop()");
        mIsAvailable = false;
        mBinder.clearScanController();
        mScanThread.quitSafely();
        mTransitionalScanHelper.stop();
        mTransitionalScanHelper.cleanup();
    }
+0 −4
Original line number Diff line number Diff line
@@ -224,10 +224,6 @@ public class ScanManager {

        // Shut down the thread
        mHandler.removeCallbacksAndMessages(null);
        Looper looper = mHandler.getLooper();
        if (looper != null) {
            looper.quitSafely();
        }

        try {
            mAdapterService.unregisterReceiver(mLocationReceiver);