diff options
author | Alex Blasche <alexander.blasche@qt.io> | 2018-07-25 14:42:06 +0200 |
---|---|---|
committer | Alex Blasche <alexander.blasche@qt.io> | 2018-07-25 14:42:18 +0200 |
commit | 25638b02766ae3109bfc83b3249e6d0dc9e21bdb (patch) | |
tree | 8ac8f0cd544dd39da674657940d6c509ea94721c /src/android/bluetooth/src/org/qtproject/qt5/android/bluetooth/QtBluetoothLE.java | |
parent | fc2a206322f6190226ebc1f04062f2c9170f0bac (diff) | |
parent | b19148f9a0f820630bd83432d96117e9598c315d (diff) |
Merge remote-tracking branch 'gerrit/dev' into btlebtle
Change-Id: Id7698ec157a4e06296bcc27d48aaa8325dd3c23a
Diffstat (limited to 'src/android/bluetooth/src/org/qtproject/qt5/android/bluetooth/QtBluetoothLE.java')
-rw-r--r-- | src/android/bluetooth/src/org/qtproject/qt5/android/bluetooth/QtBluetoothLE.java | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/src/android/bluetooth/src/org/qtproject/qt5/android/bluetooth/QtBluetoothLE.java b/src/android/bluetooth/src/org/qtproject/qt5/android/bluetooth/QtBluetoothLE.java index 1b527ae3..4063537b 100644 --- a/src/android/bluetooth/src/org/qtproject/qt5/android/bluetooth/QtBluetoothLE.java +++ b/src/android/bluetooth/src/org/qtproject/qt5/android/bluetooth/QtBluetoothLE.java @@ -1141,16 +1141,24 @@ public class QtBluetoothLE { if (handle == HANDLE_FOR_MTU_EXCHANGE) return; - GattEntry entry = entries.get(handle); - if (entry == null) - return; - if (entry.valueKnown) - return; - entry.valueKnown = true; + try { + synchronized (this) { - GattEntry serviceEntry = entries.get(entry.associatedServiceHandle); - if (serviceEntry != null && serviceEntry.endHandle == handle) - finishCurrentServiceDiscovery(entry.associatedServiceHandle); + GattEntry entry = entries.get(handle); + if (entry == null) + return; + if (entry.valueKnown) + return; + entry.valueKnown = true; + + GattEntry serviceEntry = entries.get(entry.associatedServiceHandle); + if (serviceEntry != null && serviceEntry.endHandle == handle) + finishCurrentServiceDiscovery(entry.associatedServiceHandle); + } + } catch (IndexOutOfBoundsException outOfBounds) { + Log.w(TAG, "interruptCurrentIO(): Unknown gatt entry, index: " + + handle + " size: " + entries.size()); + } } /* @@ -1271,9 +1279,16 @@ public class QtBluetoothLE { } // last entry of current discovery run? - GattEntry serviceEntry = entries.get(entry.associatedServiceHandle); - if (serviceEntry.endHandle == handle) - finishCurrentServiceDiscovery(entry.associatedServiceHandle); + synchronized (this) { + try { + GattEntry serviceEntry = entries.get(entry.associatedServiceHandle); + if (serviceEntry.endHandle == handle) + finishCurrentServiceDiscovery(entry.associatedServiceHandle); + } catch (IndexOutOfBoundsException outOfBounds) { + Log.w(TAG, "performNextIO(): Unknown service for entry, index: " + + entry.associatedServiceHandle + " size: " + entries.size()); + } + } } else { int errorCode = 0; |