diff options
author | David Robillard <d@drobilla.net> | 2009-11-22 03:06:25 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-11-22 03:06:25 +0000 |
commit | e479da3c26d41e977cf55b8e2355db45991be09f (patch) | |
tree | f6887a9b19eaee951dafd17fea8021556bff1169 /src/engine/PortImpl.cpp | |
parent | 58807f5840592959c31b415f7e2d64967594b5ee (diff) | |
download | ingen-e479da3c26d41e977cf55b8e2355db45991be09f.tar.gz ingen-e479da3c26d41e977cf55b8e2355db45991be09f.tar.bz2 ingen-e479da3c26d41e977cf55b8e2355db45991be09f.zip |
Partial support for message/value ports and the message context.
This use case now works:
- Add an event input and the "print" plugin from imum.lv2 to ingen
- Connect the event input to the input of "print"
- Hook Ingen up to JACK and play some MIDI events
(or get events to the print plugin from anywhere else)
- The "print" plugin will print the received events to the console
in the message context (i.e. the audio thread is realtime safe)
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2281 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/PortImpl.cpp')
-rw-r--r-- | src/engine/PortImpl.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/engine/PortImpl.cpp b/src/engine/PortImpl.cpp index 23f7b5f8..45ee76da 100644 --- a/src/engine/PortImpl.cpp +++ b/src/engine/PortImpl.cpp @@ -18,6 +18,7 @@ #include <iostream> #include "raul/Array.hpp" #include "raul/Maid.hpp" +#include "contexts.lv2/contexts.h" #include "interface/PortType.hpp" #include "events/SendPortValue.hpp" #include "events/SendPortActivity.hpp" @@ -75,7 +76,8 @@ PortImpl::PortImpl(BufferFactory& bufs, else _polyphonic = true; - add_property("rdf:type", Atom(Atom::URI, type.uri())); + add_property("rdf:type", Atom(Atom::URI, type.uri())); + set_context(_context); if (type == PortType::EVENTS) _broadcast = true; // send activity blips @@ -188,6 +190,7 @@ PortImpl::broadcast_value(Context& context, bool force) } break; case PortType::VALUE: + case PortType::MESSAGE: LV2Object::to_atom(context.engine().world(), ((ObjectBuffer*)buffer(0).get())->object(), val); break; } @@ -201,4 +204,19 @@ PortImpl::broadcast_value(Context& context, bool force) } +void +PortImpl::set_context(Context::ID c) +{ + _context = c; + switch (c) { + case Context::AUDIO: + set_property("ctx:context", Atom(Atom::URI, "ctx:AudioContext")); + break; + case Context::MESSAGE: + set_property("ctx:context", Atom(Atom::URI, "ctx:MessageContext")); + break; + } +} + + } // namespace Ingen |