summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-01-05 22:40:35 +0000
committerDavid Robillard <d@drobilla.net>2014-01-05 22:40:35 +0000
commit01be6fa189d1c36f63b3bfd681299aa30adfea14 (patch)
tree90022017b2029a1e2530b24abd81394094f13197
parentfc0ec26d163cd005baabfaa5a52af21408b06e64 (diff)
downloadingen-01be6fa189d1c36f63b3bfd681299aa30adfea14.tar.gz
ingen-01be6fa189d1c36f63b3bfd681299aa30adfea14.tar.bz2
ingen-01be6fa189d1c36f63b3bfd681299aa30adfea14.zip
Update type properties for morph ports so GUI displays correct type.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5277 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r--src/server/PortImpl.cpp16
-rw-r--r--src/server/PortType.hpp2
2 files changed, 15 insertions, 3 deletions
diff --git a/src/server/PortImpl.cpp b/src/server/PortImpl.cpp
index ca893cc7..e05aa1ce 100644
--- a/src/server/PortImpl.cpp
+++ b/src/server/PortImpl.cpp
@@ -104,16 +104,28 @@ PortImpl::~PortImpl()
void
PortImpl::set_type(PortType port_type, LV2_URID buffer_type)
{
+ const Ingen::URIs& uris = _bufs.uris();
+ Ingen::World* world = _bufs.engine().world();
+
+ // Update type properties so clients are aware of current type
+ remove_property(uris.rdf_type, uris.lv2_AudioPort);
+ remove_property(uris.rdf_type, uris.lv2_CVPort);
+ remove_property(uris.rdf_type, uris.lv2_ControlPort);
+ remove_property(uris.rdf_type, uris.atom_AtomPort);
+ add_property(uris.rdf_type,
+ world->forge().alloc_uri(port_type.uri().c_str()));
+
+ // Update audio thread types
_type = port_type;
_buffer_type = buffer_type;
if (!_buffer_type) {
switch (_type.id()) {
case PortType::CONTROL:
- _buffer_type = _bufs.uris().atom_Float;
+ _buffer_type = uris.atom_Float;
break;
case PortType::AUDIO:
case PortType::CV:
- _buffer_type = _bufs.uris().atom_Sound;
+ _buffer_type = uris.atom_Sound;
break;
default:
break;
diff --git a/src/server/PortType.hpp b/src/server/PortType.hpp
index 0fd61156..044ac41f 100644
--- a/src/server/PortType.hpp
+++ b/src/server/PortType.hpp
@@ -59,7 +59,7 @@ public:
PortType(ID id) : _id(id) {}
inline const Raul::URI& uri() const { return type_uri(_id); }
- inline ID id() const { return _id; }
+ inline ID id() const { return _id; }
inline bool operator==(const ID& id) const { return (_id == id); }
inline bool operator!=(const ID& id) const { return (_id != id); }