diff options
Diffstat (limited to 'src/gui/NodeModule.cpp')
-rw-r--r-- | src/gui/NodeModule.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/gui/NodeModule.cpp b/src/gui/NodeModule.cpp index 75e4b7c7..068642b1 100644 --- a/src/gui/NodeModule.cpp +++ b/src/gui/NodeModule.cpp @@ -165,19 +165,23 @@ NodeModule::show_human_names(bool b) void NodeModule::port_activity(uint32_t index, const Raul::Atom& value) { - if (!_plugin_ui) - return; - const URIs& uris = app().uris(); + if (!_plugin_ui) { + return; + } - // FIXME: Well, this sucks... - LV2_Atom* atom = (LV2_Atom*)malloc(sizeof(LV2_Atom) + value.size()); - atom->type = value.type(); - atom->size = value.size(); - memcpy(LV2_ATOM_BODY(atom), value.get_body(), value.size()); - _plugin_ui->port_event( - index, lv2_atom_total_size(atom), uris.atom_eventTransfer, atom); - free(atom); + if (value.type() == uris.atom_Float) { + _plugin_ui->port_event(index, sizeof(float), 0, value.ptr<float>()); + } else { + // FIXME: Well, this sucks... + LV2_Atom* atom = (LV2_Atom*)malloc(sizeof(LV2_Atom) + value.size()); + atom->type = value.type(); + atom->size = value.size(); + memcpy(LV2_ATOM_BODY(atom), value.get_body(), value.size()); + _plugin_ui->port_event( + index, lv2_atom_total_size(atom), uris.atom_eventTransfer, atom); + free(atom); + } } void |