diff --git a/services/midi/java/com/android/server/midi/MidiService.java b/services/midi/java/com/android/server/midi/MidiService.java index d0205ae24f85..ca31efcdf3d2 100644 --- a/services/midi/java/com/android/server/midi/MidiService.java +++ b/services/midi/java/com/android/server/midi/MidiService.java @@ -340,6 +340,11 @@ public class MidiService extends IMidiManager.Stub { IBinder binder = server.asBinder(); mDevicesByServer.remove(binder); + // Clearing mDeviceStatus is needed because setDeviceStatus() + // relies on finding the device in mDevicesByServer. + // So the status can no longer be updated after we remove it. + // Then we can end up with input ports that are stuck open. + mDeviceStatus = null; try { server.closeDevice();