Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
#548 fixed by adding synchronized blocks
  • Loading branch information
philips77 committed Aug 28, 2024
commit 57acae752ba98ceb41f0823f3eb8b08ee0dc3e5c
20 changes: 13 additions & 7 deletions ble/src/main/java/no/nordicsemi/android/ble/BleManagerHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -1451,7 +1451,9 @@ ValueChangedCallback getValueChangedCallback(@Nullable final Object attribute) {
if (callback == null) {
callback = new ValueChangedCallback(this);
if (attribute != null) {
valueChangedCallbacks.put(attribute, callback);
synchronized (valueChangedCallbacks) {
valueChangedCallbacks.put(attribute, callback);
}
}
} else if (bluetoothDevice != null) {
callback.notifyClosed();
Expand All @@ -1466,9 +1468,11 @@ ValueChangedCallback getValueChangedCallback(@Nullable final Object attribute) {
* @param attribute attribute to unbind the callback from.
*/
void removeValueChangedCallback(@Nullable final Object attribute) {
final ValueChangedCallback callback = valueChangedCallbacks.remove(attribute);
if (callback != null) {
callback.notifyClosed();
synchronized (valueChangedCallbacks) {
final ValueChangedCallback callback = valueChangedCallbacks.remove(attribute);
if (callback != null) {
callback.notifyClosed();
}
}
}

Expand Down Expand Up @@ -1976,10 +1980,12 @@ void notifyDeviceDisconnected(@NonNull final BluetoothDevice device, final int s
// automatically.
// This may be only called when the shouldAutoConnect() method returned true.
}
for (final ValueChangedCallback callback : valueChangedCallbacks.values()) {
callback.notifyClosed();
synchronized (valueChangedCallbacks) {
for (final ValueChangedCallback callback : valueChangedCallbacks.values()) {
callback.notifyClosed();
}
valueChangedCallbacks.clear();
}
valueChangedCallbacks.clear();
dataProviders.clear();
batteryLevelNotificationCallback = null;
batteryValue = -1;
Expand Down