summaryrefslogtreecommitdiffstats
path: root/services/usb/java/com
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@google.com>2015-01-15 11:36:43 -0800
committerMike Lockwood <lockwood@google.com>2015-01-15 16:07:28 -0800
commit98cc8e5a6473b3a5802d97cc81020ec4e3cd23f3 (patch)
treeb82fa59d41e941f314abc3c7f39967902c538ece /services/usb/java/com
parent10024b3dc12a8552c1547b67810c77b865045cc8 (diff)
downloadframeworks_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.java9
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;
}
}