Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -16847,6 +16847,7 @@ package android.media.midi { public abstract class MidiReceiver { ctor public MidiReceiver(); method public void flush() throws java.io.IOException; method public int getMaxMessageSize(); method public abstract void onReceive(byte[], int, int, long) throws java.io.IOException; method public void send(byte[], int, int) throws java.io.IOException; api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -18122,6 +18122,7 @@ package android.media.midi { public abstract class MidiReceiver { ctor public MidiReceiver(); method public void flush() throws java.io.IOException; method public int getMaxMessageSize(); method public abstract void onReceive(byte[], int, int, long) throws java.io.IOException; method public void send(byte[], int, int) throws java.io.IOException; core/java/com/android/internal/midi/EventScheduler.java +9 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.internal.midi; import java.util.Iterator; import java.util.SortedMap; import java.util.TreeMap; Loading @@ -28,7 +29,7 @@ public class EventScheduler { private static final long NANOS_PER_MILLI = 1000000; private final Object mLock = new Object(); private SortedMap<Long, FastEventQueue> mEventBuffer; volatile private SortedMap<Long, FastEventQueue> mEventBuffer; private FastEventQueue mEventPool = null; private int mMaxPoolSize = 200; private boolean mClosed; Loading Loading @@ -68,6 +69,7 @@ public class EventScheduler { mEventsRemoved++; SchedulableEvent event = mFirst; mFirst = event.mNext; event.mNext = null; return event; } Loading @@ -87,7 +89,7 @@ public class EventScheduler { */ public static class SchedulableEvent { private long mTimestamp; private SchedulableEvent mNext = null; volatile private SchedulableEvent mNext = null; /** * @param timestamp Loading Loading @@ -235,6 +237,11 @@ public class EventScheduler { return event; } protected void flush() { // Replace our event buffer with a fresh empty one mEventBuffer = new TreeMap<Long, FastEventQueue>(); } public void close() { synchronized (mLock) { mClosed = true; Loading core/java/com/android/internal/midi/MidiDispatcher.java +7 −0 Original line number Diff line number Diff line Loading @@ -83,4 +83,11 @@ public final class MidiDispatcher extends MidiReceiver { } } } @Override public void flush() throws IOException { for (MidiReceiver receiver : mReceivers) { receiver.flush(); } } } core/java/com/android/internal/midi/MidiEventScheduler.java +7 −30 Original line number Diff line number Diff line Loading @@ -28,16 +28,9 @@ public class MidiEventScheduler extends EventScheduler { // Maintain a pool of scheduled events to reduce memory allocation. // This pool increases performance by about 14%. private final static int POOL_EVENT_SIZE = 16; private final MidiReceiver[] mReceivers; private MidiReceiver mReceiver = new SchedulingReceiver(); private class SchedulingReceiver extends MidiReceiver { private final int mPortNumber; public SchedulingReceiver(int portNumber) { mPortNumber = portNumber; } /** * Store these bytes in the EventScheduler to be delivered at the specified * time. Loading @@ -47,14 +40,17 @@ public class MidiEventScheduler extends EventScheduler { throws IOException { MidiEvent event = createScheduledEvent(msg, offset, count, timestamp); if (event != null) { event.portNumber = mPortNumber; add(event); } } @Override public void flush() { MidiEventScheduler.this.flush(); } } public static class MidiEvent extends SchedulableEvent { public int portNumber; public int count = 0; public byte[] data; Loading @@ -80,17 +76,6 @@ public class MidiEventScheduler extends EventScheduler { } } public MidiEventScheduler() { this(0); } public MidiEventScheduler(int portCount) { mReceivers = new MidiReceiver[portCount]; for (int i = 0; i < portCount; i++) { mReceivers[i] = new SchedulingReceiver(i); } } /** * Create an event that contains the message. */ Loading Loading @@ -132,15 +117,7 @@ public class MidiEventScheduler extends EventScheduler { * @return the MidiReceiver */ public MidiReceiver getReceiver() { return mReceivers[0]; } /** * This MidiReceiver will write date to the scheduling buffer. * @return the MidiReceiver */ public MidiReceiver getReceiver(int portNumber) { return mReceivers[portNumber]; return mReceiver; } } Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -16847,6 +16847,7 @@ package android.media.midi { public abstract class MidiReceiver { ctor public MidiReceiver(); method public void flush() throws java.io.IOException; method public int getMaxMessageSize(); method public abstract void onReceive(byte[], int, int, long) throws java.io.IOException; method public void send(byte[], int, int) throws java.io.IOException;
api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -18122,6 +18122,7 @@ package android.media.midi { public abstract class MidiReceiver { ctor public MidiReceiver(); method public void flush() throws java.io.IOException; method public int getMaxMessageSize(); method public abstract void onReceive(byte[], int, int, long) throws java.io.IOException; method public void send(byte[], int, int) throws java.io.IOException;
core/java/com/android/internal/midi/EventScheduler.java +9 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.internal.midi; import java.util.Iterator; import java.util.SortedMap; import java.util.TreeMap; Loading @@ -28,7 +29,7 @@ public class EventScheduler { private static final long NANOS_PER_MILLI = 1000000; private final Object mLock = new Object(); private SortedMap<Long, FastEventQueue> mEventBuffer; volatile private SortedMap<Long, FastEventQueue> mEventBuffer; private FastEventQueue mEventPool = null; private int mMaxPoolSize = 200; private boolean mClosed; Loading Loading @@ -68,6 +69,7 @@ public class EventScheduler { mEventsRemoved++; SchedulableEvent event = mFirst; mFirst = event.mNext; event.mNext = null; return event; } Loading @@ -87,7 +89,7 @@ public class EventScheduler { */ public static class SchedulableEvent { private long mTimestamp; private SchedulableEvent mNext = null; volatile private SchedulableEvent mNext = null; /** * @param timestamp Loading Loading @@ -235,6 +237,11 @@ public class EventScheduler { return event; } protected void flush() { // Replace our event buffer with a fresh empty one mEventBuffer = new TreeMap<Long, FastEventQueue>(); } public void close() { synchronized (mLock) { mClosed = true; Loading
core/java/com/android/internal/midi/MidiDispatcher.java +7 −0 Original line number Diff line number Diff line Loading @@ -83,4 +83,11 @@ public final class MidiDispatcher extends MidiReceiver { } } } @Override public void flush() throws IOException { for (MidiReceiver receiver : mReceivers) { receiver.flush(); } } }
core/java/com/android/internal/midi/MidiEventScheduler.java +7 −30 Original line number Diff line number Diff line Loading @@ -28,16 +28,9 @@ public class MidiEventScheduler extends EventScheduler { // Maintain a pool of scheduled events to reduce memory allocation. // This pool increases performance by about 14%. private final static int POOL_EVENT_SIZE = 16; private final MidiReceiver[] mReceivers; private MidiReceiver mReceiver = new SchedulingReceiver(); private class SchedulingReceiver extends MidiReceiver { private final int mPortNumber; public SchedulingReceiver(int portNumber) { mPortNumber = portNumber; } /** * Store these bytes in the EventScheduler to be delivered at the specified * time. Loading @@ -47,14 +40,17 @@ public class MidiEventScheduler extends EventScheduler { throws IOException { MidiEvent event = createScheduledEvent(msg, offset, count, timestamp); if (event != null) { event.portNumber = mPortNumber; add(event); } } @Override public void flush() { MidiEventScheduler.this.flush(); } } public static class MidiEvent extends SchedulableEvent { public int portNumber; public int count = 0; public byte[] data; Loading @@ -80,17 +76,6 @@ public class MidiEventScheduler extends EventScheduler { } } public MidiEventScheduler() { this(0); } public MidiEventScheduler(int portCount) { mReceivers = new MidiReceiver[portCount]; for (int i = 0; i < portCount; i++) { mReceivers[i] = new SchedulingReceiver(i); } } /** * Create an event that contains the message. */ Loading Loading @@ -132,15 +117,7 @@ public class MidiEventScheduler extends EventScheduler { * @return the MidiReceiver */ public MidiReceiver getReceiver() { return mReceivers[0]; } /** * This MidiReceiver will write date to the scheduling buffer. * @return the MidiReceiver */ public MidiReceiver getReceiver(int portNumber) { return mReceivers[portNumber]; return mReceiver; } }