[midisnoop] push by surfacep...@gmail.com - Add warnings when RtMidi doesn't filter messages correctly according t... on 2014-11-08 22:32 GMT

2 views
Skip to first unread message

midi...@googlecode.com

unread,
Nov 8, 2014, 5:33:07 PM11/8/14
to midisnoop-...@googlegroups.com
Revision: 84d3df7036b9
Author: Devin Anderson <surface...@gmail.com>
Date: Sat Nov 8 22:32:38 2014 UTC
Log: Add warnings when RtMidi doesn't filter messages correctly
according to ignore flags.

https://code.google.com/p/midisnoop/source/detail?r=84d3df7036b9

Modified:
/src/engine.cpp
/src/engine.h

=======================================
--- /src/engine.cpp Thu Feb 28 06:04:38 2013 UTC
+++ /src/engine.cpp Sat Nov 8 22:32:38 2014 UTC
@@ -38,7 +38,7 @@
Engine::handleMidiInput(double timeStamp, std::vector<unsigned char>
*message,
void *engine)
{
- static_cast<Engine *>(engine)->handleMidiInput(timeStamp, message);
+ static_cast<Engine *>(engine)->handleMidiInput(timeStamp, *message);
}

// Class definition
@@ -187,13 +187,34 @@

void
Engine::handleMidiInput(double /*timeStamp*/,
- std::vector<unsigned char> *message)
+ const std::vector<unsigned char> &message)
{
+ switch (message[0]) {
+ case 0xf0:
+ if (ignoreSystemExclusiveEvents) {
+ qWarning() << "RtMidi did not filter system exclusive event";
+ return;
+ }
+ break;
+ case 0xf1:
+ case 0xf8:
+ case 0xf9:
+ if (ignoreTimeEvents) {
+ qWarning() << "RtMidi did not filter time event";
+ return;
+ }
+ break;
+ case 0xfe:
+ if (ignoreActiveSensingEvents) {
+ qWarning() << "RtMidi did not filter active sensing event";
+ return;
+ }
+ }
quint64 timeStamp = getCurrentTimestamp();
QByteArray msg;
- int size = static_cast<int>(message->size());
+ int size = static_cast<int>(message.size());
for (int i = 0; i < size; i++) {
- msg.append(message->at(i));
+ msg.append(message[i]);
}
emit messageReceived(timeStamp, msg);
}
=======================================
--- /src/engine.h Thu Feb 28 06:04:38 2013 UTC
+++ /src/engine.h Sat Nov 8 22:32:38 2014 UTC
@@ -141,7 +141,8 @@
getCurrentTimestamp() const;

void
- handleMidiInput(double timeStamp, std::vector<unsigned char> *message);
+ handleMidiInput(double timeStamp,
+ const std::vector<unsigned char> &message);

void
removePorts();
Reply all
Reply to author
Forward
0 new messages