commit c84b301765a5eef031c03294879444850f7e3234
parent a8f94e538c676cc58ce097863d94dba5345addab
Author: fundamental <mark.d.mccurry@gmail.com>
Date: Fri, 18 Jul 2014 23:15:23 -0400
JACK: Merge OSC Metadata Patch
Add JACK Metadata for the (JACK) OSC port
Patch by Hanspeter Portner
Diffstat:
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/src/Nio/CMakeLists.txt b/src/Nio/CMakeLists.txt
@@ -24,6 +24,11 @@ if(JackEnable)
include_directories(${JACK_INCLUDE_DIR})
list(APPEND zynaddsubfx_nio_SRCS JackEngine.cpp)
list(APPEND zynaddsubfx_nio_lib ${JACK_LIBRARIES})
+
+ CHECK_INCLUDE_FILES("jack/metadata.h" JACK_HAS_METADATA_API)
+ if(JACK_HAS_METADATA_API)
+ add_definitions(-DJACK_HAS_METADATA_API)
+ endif(JACK_HAS_METADATA_API)
endif(JackEnable)
if(PaEnable)
diff --git a/src/Nio/JackEngine.cpp b/src/Nio/JackEngine.cpp
@@ -21,6 +21,9 @@
#include <iostream>
#include <jack/midiport.h>
+#ifdef JACK_HAS_METADATA_API
+# include <jack/metadata.h>
+#endif // JACK_HAS_METADATA_API
#include "jack_osc.h"
#include <fcntl.h>
#include <sys/stat.h>
@@ -218,6 +221,10 @@ bool JackEngine::openAudio()
midi.jack_sync = true;
osc.oscport = jack_port_register(jackClient, "osc",
JACK_DEFAULT_OSC_TYPE, JackPortIsInput, 0);
+#ifdef JACK_HAS_METADATA_API
+ jack_uuid_t uuid = jack_port_uuid(osc.oscport);
+ jack_set_property(jackClient, uuid, "http://jackaudio.org/metadata/event-types", JACK_EVENT_TYPE__OSC, "text/plain");
+#endif // JACK_HAS_METADATA_API
return true;
}
else
@@ -235,8 +242,13 @@ void JackEngine::stopAudio()
jack_port_unregister(jackClient, port);
}
midi.jack_sync = false;
- if(osc.oscport)
+ if(osc.oscport) {
jack_port_unregister(jackClient, osc.oscport);
+#ifdef JACK_HAS_METADATA_API
+ jack_uuid_t uuid = jack_port_uuid(osc.oscport);
+ jack_remove_property(jackClient, uuid, "http://jackaudio.org/metadata/event-types");
+#endif // JACK_HAS_METADATA_API
+ }
if(!getMidiEn())
disconnectJack();
}