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

Commit f07250ab authored by Łukasz Rymanowski (xWF)'s avatar Łukasz Rymanowski (xWF) Committed by Automerger Merge Worker
Browse files

Merge "LeAudioService: Fix possible double scanner start" into main am: 578d17e3 am: 64153c3c

parents 65757cf0 64153c3c
Loading
Loading
Loading
Loading
+23 −6
Original line number Diff line number Diff line
@@ -2027,21 +2027,33 @@ public class LeAudioService extends ProfileService {

    private class AudioServerScanCallback extends IScannerCallback.Stub {
        // See BluetoothLeScanner.BleScanCallbackWrapper.mScannerId
        int mScannerId = 0;
        static final int SCANNER_NOT_INITIALIZED = -2;
        static final int SCANNER_INITIALIZING = -1;
        int mScannerId = SCANNER_NOT_INITIALIZED;

        synchronized void startBackgroundScan() {
            if (mScannerId != 0) {
                Log.d(TAG, "Scanner is already registered with id " + mScannerId);
            if (mScannerId >= 0) {
                Log.i(
                        TAG,
                        "startBackgroundScan: Scanner is already registered with id " + mScannerId);
                return;
            }

            if (mScannerId == SCANNER_INITIALIZING) {
                Log.i(TAG, "startBackgroundScan: Scanner is already initializing");
                return;
            }

            mScannerId = SCANNER_INITIALIZING;

            mAdapterService
                    .getBluetoothScanController()
                    .registerScannerInternal(this, getAttributionSource(), null);
        }

        synchronized void stopBackgroundScan() {
            if (mScannerId == 0) {
                Log.d(TAG, "Scanner is already unregistered");
            if (mScannerId < 0) {
                Log.d(TAG, "Scanner is not running (mScannerId=" + mScannerId + ")");
                return;
            }
            mAdapterService
@@ -2051,11 +2063,16 @@ public class LeAudioService extends ProfileService {
            mAdapterService
                    .getBluetoothScanController()
                    .unregisterScannerInternal(mScannerId);
            mScannerId = 0;
            mScannerId = SCANNER_NOT_INITIALIZED;
        }

        @Override
        public synchronized void onScannerRegistered(int status, int scannerId) {
            Log.d(TAG, "onScannerRegistered: status: " + status + ", id:" + scannerId);
            if (status != 0) {
                mScannerId = SCANNER_NOT_INITIALIZED;
                return;
            }
            mScannerId = scannerId;

            /* Filter we are building here will not match to anything.