Loading services/usb/java/com/android/server/usb/UsbDirectMidiDevice.java +60 −40 Original line number Diff line number Diff line Loading @@ -81,7 +81,7 @@ public final class UsbDirectMidiDevice implements Closeable { private static final int BULK_TRANSFER_TIMEOUT_MILLISECONDS = 10; // Arbitrary number for timeout when closing a thread private static final int THREAD_JOIN_TIMEOUT_MILLISECONDS = 50; private static final int THREAD_JOIN_TIMEOUT_MILLISECONDS = 200; private ArrayList<UsbDeviceConnection> mUsbDeviceConnections; private ArrayList<ArrayList<UsbEndpoint>> mInputUsbEndpoints; Loading Loading @@ -370,6 +370,10 @@ public final class UsbDirectMidiDevice implements Closeable { convertedArray = swapEndiannessPerWord(inputBuffer, bytesRead); } else { if (mUsbMidiPacketConverter == null) { Log.w(TAG, "mUsbMidiPacketConverter is null"); break; } convertedArray = mUsbMidiPacketConverter.usbMidiToRawMidi( inputBuffer, bytesRead); Loading @@ -379,12 +383,20 @@ public final class UsbDirectMidiDevice implements Closeable { logByteArray("Input after conversion ", convertedArray, 0, convertedArray.length); } if ((outputReceivers == null) || (outputReceivers[portFinal] == null)) { Log.w(TAG, "outputReceivers is null"); break; } outputReceivers[portFinal].send(convertedArray, 0, convertedArray.length, timestamp); } } } catch (IOException e) { Log.d(TAG, "reader thread exiting"); } catch (NullPointerException e) { Log.e(TAG, "input thread: ", e); } finally { request.close(); } Loading Loading @@ -414,6 +426,7 @@ public final class UsbDirectMidiDevice implements Closeable { Thread newThread = new Thread("UsbDirectMidiDevice output thread " + portFinal) { @Override public void run() { try { while (true) { if (Thread.currentThread().interrupted()) { Log.w(TAG, "output thread interrupted"); Loading Loading @@ -443,6 +456,10 @@ public final class UsbDirectMidiDevice implements Closeable { convertedArray = swapEndiannessPerWord(event.data, event.count); } else { if (mUsbMidiPacketConverter == null) { Log.w(TAG, "mUsbMidiPacketConverter is null"); break; } convertedArray = mUsbMidiPacketConverter.rawMidiToUsbMidi( event.data, event.count, portFinal); Loading @@ -458,6 +475,9 @@ public final class UsbDirectMidiDevice implements Closeable { BULK_TRANSFER_TIMEOUT_MILLISECONDS); eventSchedulerFinal.addEventToPool(event); } } catch (NullPointerException e) { Log.e(TAG, "output thread: ", e); } Log.d(TAG, "output thread exit"); } }; Loading Loading
services/usb/java/com/android/server/usb/UsbDirectMidiDevice.java +60 −40 Original line number Diff line number Diff line Loading @@ -81,7 +81,7 @@ public final class UsbDirectMidiDevice implements Closeable { private static final int BULK_TRANSFER_TIMEOUT_MILLISECONDS = 10; // Arbitrary number for timeout when closing a thread private static final int THREAD_JOIN_TIMEOUT_MILLISECONDS = 50; private static final int THREAD_JOIN_TIMEOUT_MILLISECONDS = 200; private ArrayList<UsbDeviceConnection> mUsbDeviceConnections; private ArrayList<ArrayList<UsbEndpoint>> mInputUsbEndpoints; Loading Loading @@ -370,6 +370,10 @@ public final class UsbDirectMidiDevice implements Closeable { convertedArray = swapEndiannessPerWord(inputBuffer, bytesRead); } else { if (mUsbMidiPacketConverter == null) { Log.w(TAG, "mUsbMidiPacketConverter is null"); break; } convertedArray = mUsbMidiPacketConverter.usbMidiToRawMidi( inputBuffer, bytesRead); Loading @@ -379,12 +383,20 @@ public final class UsbDirectMidiDevice implements Closeable { logByteArray("Input after conversion ", convertedArray, 0, convertedArray.length); } if ((outputReceivers == null) || (outputReceivers[portFinal] == null)) { Log.w(TAG, "outputReceivers is null"); break; } outputReceivers[portFinal].send(convertedArray, 0, convertedArray.length, timestamp); } } } catch (IOException e) { Log.d(TAG, "reader thread exiting"); } catch (NullPointerException e) { Log.e(TAG, "input thread: ", e); } finally { request.close(); } Loading Loading @@ -414,6 +426,7 @@ public final class UsbDirectMidiDevice implements Closeable { Thread newThread = new Thread("UsbDirectMidiDevice output thread " + portFinal) { @Override public void run() { try { while (true) { if (Thread.currentThread().interrupted()) { Log.w(TAG, "output thread interrupted"); Loading Loading @@ -443,6 +456,10 @@ public final class UsbDirectMidiDevice implements Closeable { convertedArray = swapEndiannessPerWord(event.data, event.count); } else { if (mUsbMidiPacketConverter == null) { Log.w(TAG, "mUsbMidiPacketConverter is null"); break; } convertedArray = mUsbMidiPacketConverter.rawMidiToUsbMidi( event.data, event.count, portFinal); Loading @@ -458,6 +475,9 @@ public final class UsbDirectMidiDevice implements Closeable { BULK_TRANSFER_TIMEOUT_MILLISECONDS); eventSchedulerFinal.addEventToPool(event); } } catch (NullPointerException e) { Log.e(TAG, "output thread: ", e); } Log.d(TAG, "output thread exit"); } }; Loading