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

Commit f70e37d7 authored by Ajay Panicker's avatar Ajay Panicker Committed by Myles Watson
Browse files

Synchronize on a static final object to lock mDeviceBusy

Synchronizing on a field doesn't lock the object in a predictable way.

Bug: 63389270
Test: Compile
Change-Id: Idd3111bc94d32bc4bb320a5c25da37fe68276337
parent e88bc0ae
Loading
Loading
Loading
Loading
+13 −12
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ public final class BluetoothGatt implements BluetoothProfile {
    private int mAuthRetryState;
    private int mConnState;
    private final Object mStateLock = new Object();
    private final Object mDeviceBusyLock = new Object();
    @UnsupportedAppUsage
    private Boolean mDeviceBusy = false;
    @UnsupportedAppUsage
@@ -281,7 +282,7 @@ public final class BluetoothGatt implements BluetoothProfile {
                        }
                    }

                    synchronized (mDeviceBusy) {
                    synchronized (mDeviceBusyLock) {
                        mDeviceBusy = false;
                    }
                }
@@ -356,7 +357,7 @@ public final class BluetoothGatt implements BluetoothProfile {
                        return;
                    }

                    synchronized (mDeviceBusy) {
                    synchronized (mDeviceBusyLock) {
                        mDeviceBusy = false;
                    }

@@ -412,7 +413,7 @@ public final class BluetoothGatt implements BluetoothProfile {
                        return;
                    }

                    synchronized (mDeviceBusy) {
                    synchronized (mDeviceBusyLock) {
                        mDeviceBusy = false;
                    }

@@ -495,7 +496,7 @@ public final class BluetoothGatt implements BluetoothProfile {
                        return;
                    }

                    synchronized (mDeviceBusy) {
                    synchronized (mDeviceBusyLock) {
                        mDeviceBusy = false;
                    }

@@ -546,7 +547,7 @@ public final class BluetoothGatt implements BluetoothProfile {
                        return;
                    }

                    synchronized (mDeviceBusy) {
                    synchronized (mDeviceBusyLock) {
                        mDeviceBusy = false;
                    }

@@ -595,7 +596,7 @@ public final class BluetoothGatt implements BluetoothProfile {
                        return;
                    }

                    synchronized (mDeviceBusy) {
                    synchronized (mDeviceBusyLock) {
                        mDeviceBusy = false;
                    }

@@ -1097,7 +1098,7 @@ public final class BluetoothGatt implements BluetoothProfile {
        BluetoothDevice device = service.getDevice();
        if (device == null) return false;

        synchronized (mDeviceBusy) {
        synchronized (mDeviceBusyLock) {
            if (mDeviceBusy) return false;
            mDeviceBusy = true;
        }
@@ -1131,7 +1132,7 @@ public final class BluetoothGatt implements BluetoothProfile {
        if (VDBG) Log.d(TAG, "readUsingCharacteristicUuid() - uuid: " + uuid);
        if (mService == null || mClientIf == 0) return false;

        synchronized (mDeviceBusy) {
        synchronized (mDeviceBusyLock) {
            if (mDeviceBusy) return false;
            mDeviceBusy = true;
        }
@@ -1177,7 +1178,7 @@ public final class BluetoothGatt implements BluetoothProfile {
        BluetoothDevice device = service.getDevice();
        if (device == null) return false;

        synchronized (mDeviceBusy) {
        synchronized (mDeviceBusyLock) {
            if (mDeviceBusy) return false;
            mDeviceBusy = true;
        }
@@ -1220,7 +1221,7 @@ public final class BluetoothGatt implements BluetoothProfile {
        BluetoothDevice device = service.getDevice();
        if (device == null) return false;

        synchronized (mDeviceBusy) {
        synchronized (mDeviceBusyLock) {
            if (mDeviceBusy) return false;
            mDeviceBusy = true;
        }
@@ -1261,7 +1262,7 @@ public final class BluetoothGatt implements BluetoothProfile {
        BluetoothDevice device = service.getDevice();
        if (device == null) return false;

        synchronized (mDeviceBusy) {
        synchronized (mDeviceBusyLock) {
            if (mDeviceBusy) return false;
            mDeviceBusy = true;
        }
@@ -1329,7 +1330,7 @@ public final class BluetoothGatt implements BluetoothProfile {
        if (VDBG) Log.d(TAG, "executeReliableWrite() - device: " + mDevice.getAddress());
        if (mService == null || mClientIf == 0) return false;

        synchronized (mDeviceBusy) {
        synchronized (mDeviceBusyLock) {
            if (mDeviceBusy) return false;
            mDeviceBusy = true;
        }