diff options
author | David Robillard <d@drobilla.net> | 2011-09-14 22:49:22 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-09-14 22:49:22 +0000 |
commit | 728f510e8c542db2907dcd439a9ab99d07282220 (patch) | |
tree | 6aa01740b1def7a1fa0a32e22fef929bdc231a62 /src/gui/Port.cpp | |
parent | e18380569bdbe1926be7540f3e2f9ebdf49a8e70 (diff) | |
download | ingen-728f510e8c542db2907dcd439a9ab99d07282220.tar.gz ingen-728f510e8c542db2907dcd439a9ab99d07282220.tar.bz2 ingen-728f510e8c542db2907dcd439a9ab99d07282220.zip |
Support lv2:sampleRate controls (mostly) correctly.
Fix initial control port values (was always 0.0).
Fix numeric values in control window.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3460 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/gui/Port.cpp')
-rw-r--r-- | src/gui/Port.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/gui/Port.cpp b/src/gui/Port.cpp index 25edf685..9b2a1c8f 100644 --- a/src/gui/Port.cpp +++ b/src/gui/Port.cpp @@ -111,7 +111,7 @@ Port::update_metadata() if (parent) { float min = 0.0f; float max = 1.0f; - parent->port_value_range(pm, min, max); + parent->port_value_range(pm, min, max, App::instance().sample_rate()); set_control_min(min); set_control_max(max); } @@ -193,12 +193,20 @@ Port::property_changed(const URI& key, const Atom& value) { const LV2URIMap& uris = App::instance().uris(); if (value.type() == Atom::FLOAT) { - if (key == uris.ingen_value && !_pressed) - set_control(value.get_float(), false); - else if (key == uris.lv2_minimum) - set_control_min(value.get_float()); - else if (key == uris.lv2_maximum) - set_control_max(value.get_float()); + float val = value.get_float(); + if (key == uris.ingen_value && !_pressed) { + set_control(val, false); + } else if (key == uris.lv2_minimum) { + if (model()->port_property(uris.lv2_sampleRate)) { + val *= App::instance().sample_rate(); + } + set_control_min(val); + } else if (key == uris.lv2_maximum) { + if (model()->port_property(uris.lv2_sampleRate)) { + val *= App::instance().sample_rate(); + } + set_control_max(val); + } } else if (key == uris.lv2_portProperty) { if (value == uris.lv2_toggled) set_toggled(true); |