summaryrefslogtreecommitdiffstats
path: root/src/libs/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/client')
-rw-r--r--src/libs/client/NodeModel.cpp32
-rw-r--r--src/libs/client/NodeModel.hpp2
2 files changed, 22 insertions, 12 deletions
diff --git a/src/libs/client/NodeModel.cpp b/src/libs/client/NodeModel.cpp
index 76faa158..a910d67e 100644
--- a/src/libs/client/NodeModel.cpp
+++ b/src/libs/client/NodeModel.cpp
@@ -135,7 +135,7 @@ NodeModel::get_port(const string& port_name) const
void
NodeModel::add_program(int bank, int program, const string& name)
{
- _banks[bank][program] = name;
+ _banks[bank][program] = name;
}
@@ -149,28 +149,38 @@ NodeModel::remove_program(int bank, int program)
void
-NodeModel::port_value_range(const string& name, float& min, float& max)
+NodeModel::port_value_range(SharedPtr<PortModel> port, float& min, float& max)
{
- // FIXME: cache these values
- const Atom& min_atom = get_metadata("ingen:minimum");
- const Atom& max_atom = get_metadata("ingen:maximum");
- if (min_atom.type() == Atom::FLOAT)
- min = min_atom.get_float();
- if (max_atom.type() == Atom::FLOAT)
- max = max_atom.get_float();
+ assert(port->parent().get() == this);
+ // FIXME: cache these values
+
+ // Plugin value first
#ifdef HAVE_SLV2
if (plugin() && plugin()->type() == PluginModel::LV2) {
min = slv2_port_get_minimum_value(
plugin()->slv2_plugin(),
slv2_plugin_get_port_by_symbol(plugin()->slv2_plugin(),
- name.c_str()));
+ port->path().name().c_str()));
max = slv2_port_get_maximum_value(
plugin()->slv2_plugin(),
slv2_plugin_get_port_by_symbol(plugin()->slv2_plugin(),
- name.c_str()));
+ port->path().name().c_str()));
+
+ //cerr << "SLV2: " << min << " .. " << max << endl;
}
#endif
+
+ // Possibly overriden
+ const Atom& min_atom = port->get_metadata("ingen:minimum");
+ const Atom& max_atom = port->get_metadata("ingen:maximum");
+ if (min_atom.type() == Atom::FLOAT)
+ min = min_atom.get_float();
+ if (max_atom.type() == Atom::FLOAT)
+ max = max_atom.get_float();
+
+ //cerr << (unsigned)plugin()->type() << "::" << _path << ".port_value_range(" << port->path().name()
+ // << ") == " << min << " .. " << max << endl;
}
diff --git a/src/libs/client/NodeModel.hpp b/src/libs/client/NodeModel.hpp
index 05a92d7c..fe7faa0a 100644
--- a/src/libs/client/NodeModel.hpp
+++ b/src/libs/client/NodeModel.hpp
@@ -58,7 +58,7 @@ public:
const PortModelList& ports() const { return _ports; }
virtual bool polyphonic() const { return _polyphonic; }
- void port_value_range(const string& name, float& min, float& max);
+ void port_value_range(SharedPtr<PortModel> port, float& min, float& max);
// Signals
sigc::signal<void, SharedPtr<PortModel> > new_port_sig;