Search in sources :

Example 1 with MetaEventListener

use of javax.sound.midi.MetaEventListener in project jdk8u_jdk by JetBrains.

the class EventDispatcher method processEvent.

/**
     * Invoked when there is at least one event in the queue.
     * Implement this as a callback to process one event.
     */
void processEvent(EventInfo eventInfo) {
    int count = eventInfo.getListenerCount();
    // process an LineEvent
    if (eventInfo.getEvent() instanceof LineEvent) {
        LineEvent event = (LineEvent) eventInfo.getEvent();
        if (Printer.debug)
            Printer.debug("Sending " + event + " to " + count + " listeners");
        for (int i = 0; i < count; i++) {
            try {
                ((LineListener) eventInfo.getListener(i)).update(event);
            } catch (Throwable t) {
                if (Printer.err)
                    t.printStackTrace();
            }
        }
        return;
    }
    // process a MetaMessage
    if (eventInfo.getEvent() instanceof MetaMessage) {
        MetaMessage event = (MetaMessage) eventInfo.getEvent();
        for (int i = 0; i < count; i++) {
            try {
                ((MetaEventListener) eventInfo.getListener(i)).meta(event);
            } catch (Throwable t) {
                if (Printer.err)
                    t.printStackTrace();
            }
        }
        return;
    }
    // process a Controller or Mode Event
    if (eventInfo.getEvent() instanceof ShortMessage) {
        ShortMessage event = (ShortMessage) eventInfo.getEvent();
        int status = event.getStatus();
        // c is the channel they are sent on.
        if ((status & 0xF0) == 0xB0) {
            for (int i = 0; i < count; i++) {
                try {
                    ((ControllerEventListener) eventInfo.getListener(i)).controlChange(event);
                } catch (Throwable t) {
                    if (Printer.err)
                        t.printStackTrace();
                }
            }
        }
        return;
    }
    Printer.err("Unknown event type: " + eventInfo.getEvent());
}
Also used : LineEvent(javax.sound.sampled.LineEvent) ControllerEventListener(javax.sound.midi.ControllerEventListener) ShortMessage(javax.sound.midi.ShortMessage) MetaEventListener(javax.sound.midi.MetaEventListener) LineListener(javax.sound.sampled.LineListener) MetaMessage(javax.sound.midi.MetaMessage)

Aggregations

ControllerEventListener (javax.sound.midi.ControllerEventListener)1 MetaEventListener (javax.sound.midi.MetaEventListener)1 MetaMessage (javax.sound.midi.MetaMessage)1 ShortMessage (javax.sound.midi.ShortMessage)1 LineEvent (javax.sound.sampled.LineEvent)1 LineListener (javax.sound.sampled.LineListener)1