@@ -262,23 +262,25 @@ private void disconnectByDeviceAddress(@NonNull String deviceAddress) {
262
262
synchronized (midiInputDevicesMap ) {
263
263
MidiInputDevice midiInputDevice = midiInputDevicesMap .get (deviceAddress );
264
264
if (midiInputDevice != null ) {
265
+ midiInputDevicesMap .remove (deviceAddress );
266
+
265
267
midiInputDevice .setOnMidiInputEventListener (null );
266
268
267
269
if (midiDeviceDetachedListener != null ) {
268
270
midiDeviceDetachedListener .onMidiInputDeviceDetached (midiInputDevice );
269
271
}
270
272
}
271
- midiInputDevicesMap .remove (deviceAddress );
272
273
}
273
274
274
275
synchronized (midiOutputDevicesMap ) {
275
276
MidiOutputDevice midiOutputDevice = midiOutputDevicesMap .get (deviceAddress );
276
277
if (midiOutputDevice != null ) {
278
+ midiOutputDevicesMap .remove (deviceAddress );
279
+
277
280
if (midiDeviceDetachedListener != null ) {
278
281
midiDeviceDetachedListener .onMidiOutputDeviceDetached (midiOutputDevice );
279
282
}
280
283
}
281
- midiOutputDevicesMap .remove (deviceAddress );
282
284
}
283
285
}
284
286
@@ -359,30 +361,33 @@ public void onReceive(Context context, Intent intent) {
359
361
break ;
360
362
361
363
case BluetoothProfile .STATE_DISCONNECTED :
362
- if ( midiDeviceAttachedListener != null ) {
364
+ String deviceAddress = device . getAddress ();
363
365
364
- String deviceAddress = device .getAddress ();
366
+ synchronized (midiInputDevicesMap ) {
367
+ MidiInputDevice midiInputDevice = midiInputDevicesMap .get (deviceAddress );
368
+ if (midiInputDevice != null ) {
369
+ midiInputDevicesMap .remove (deviceAddress );
365
370
366
- synchronized (midiInputDevicesMap ) {
367
- MidiInputDevice midiInputDevice = midiInputDevicesMap .get (deviceAddress );
368
- if (midiInputDevice != null ) {
369
- midiInputDevice .setOnMidiInputEventListener (null );
371
+ midiInputDevice .setOnMidiInputEventListener (null );
372
+ if (midiDeviceDetachedListener != null ) {
370
373
midiDeviceDetachedListener .onMidiInputDeviceDetached (midiInputDevice );
371
- midiInputDevicesMap .remove (deviceAddress );
372
374
}
373
375
}
376
+ }
374
377
375
- synchronized (midiOutputDevicesMap ) {
376
- MidiOutputDevice midiOutputDevice = midiOutputDevicesMap .get (deviceAddress );
377
- if (midiOutputDevice != null ) {
378
+ synchronized (midiOutputDevicesMap ) {
379
+ MidiOutputDevice midiOutputDevice = midiOutputDevicesMap .get (deviceAddress );
380
+ if (midiOutputDevice != null ) {
381
+ midiOutputDevicesMap .remove (deviceAddress );
382
+
383
+ if (midiDeviceDetachedListener != null ) {
378
384
midiDeviceDetachedListener .onMidiOutputDeviceDetached (midiOutputDevice );
379
- midiOutputDevicesMap .remove (deviceAddress );
380
385
}
381
386
}
387
+ }
382
388
383
- synchronized (bluetoothDevicesMap ) {
384
- bluetoothDevicesMap .remove (deviceAddress );
385
- }
389
+ synchronized (bluetoothDevicesMap ) {
390
+ bluetoothDevicesMap .remove (deviceAddress );
386
391
}
387
392
break ;
388
393
}
0 commit comments