diff options
author | Mike Lockwood <lockwood@google.com> | 2015-01-15 11:36:43 -0800 |
---|---|---|
committer | Mike Lockwood <lockwood@google.com> | 2015-01-15 16:07:28 -0800 |
commit | 98cc8e5a6473b3a5802d97cc81020ec4e3cd23f3 (patch) | |
tree | b82fa59d41e941f314abc3c7f39967902c538ece /services/usb/java/com | |
parent | 10024b3dc12a8552c1547b67810c77b865045cc8 (diff) | |
download | frameworks_base-98cc8e5a6473b3a5802d97cc81020ec4e3cd23f3.zip frameworks_base-98cc8e5a6473b3a5802d97cc81020ec4e3cd23f3.tar.gz frameworks_base-98cc8e5a6473b3a5802d97cc81020ec4e3cd23f3.tar.bz2 |
MidiManager bug fixing:
- fix off by one error that caused failure handling one byte messages
- poll thread now terminates properly in UsbMidiDevice
- fix cleanup logic in MidiDeviceServer
Change-Id: I0c13a98b6542cfb271b51678e81d1822c8da2985
Diffstat (limited to 'services/usb/java/com')
-rw-r--r-- | services/usb/java/com/android/server/usb/UsbMidiDevice.java | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/services/usb/java/com/android/server/usb/UsbMidiDevice.java b/services/usb/java/com/android/server/usb/UsbMidiDevice.java index aaac331..01b2df9 100644 --- a/services/usb/java/com/android/server/usb/UsbMidiDevice.java +++ b/services/usb/java/com/android/server/usb/UsbMidiDevice.java @@ -133,7 +133,8 @@ public final class UsbMidiDevice implements Closeable { public void run() { byte[] buffer = new byte[3]; try { - while (true) { + boolean done = false; + while (!done) { // look for a readable FileDescriptor for (int index = 0; index < mPollFDs.length; index++) { StructPollfd pfd = mPollFDs[index]; @@ -141,7 +142,11 @@ public final class UsbMidiDevice implements Closeable { // clear readable flag pfd.revents = 0; int count = readMessage(buffer, index); - mOutputPortReceivers[index].onPost(buffer, 0, count, System.nanoTime()); + mOutputPortReceivers[index].onPost(buffer, 0, count, + System.nanoTime()); + } else if ((pfd.revents & (OsConstants.POLLERR + | OsConstants.POLLHUP)) != 0) { + done = true; } } |