summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--src/plugin.c43
2 files changed, 31 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 6f00658..4bc1805 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,8 @@ lilv (UNRELEASED) unstable; urgency=low
* Add lv2core as a pkg-config dependency (for lv2.h header include)
* Obey prefix when installing bash completion script
+ * Support integer minimum, maximum, and default port values in
+ lilv_plugin_get_port_ranges_float
-- David Robillard <d@drobilla.net> (UNRELEASED)
diff --git a/src/plugin.c b/src/plugin.c
index 8b86e04..6a245e2 100644
--- a/src/plugin.c
+++ b/src/plugin.c
@@ -457,20 +457,35 @@ lilv_plugin_get_port_ranges_float(const LilvPlugin* p,
for (uint32_t i = 0; i < p->num_ports; ++i) {
lilv_port_get_range(p, p->ports[i], defptr, minptr, maxptr);
- if (min_values)
- min_values[i] = lilv_node_is_float(min)
- ? lilv_node_as_float(min)
- : NAN;
-
- if (max_values)
- max_values[i] = lilv_node_is_float(max)
- ? lilv_node_as_float(max)
- : NAN;
-
- if (def_values)
- def_values[i] = lilv_node_is_float(def)
- ? lilv_node_as_float(def)
- : NAN;
+ if (min_values) {
+ if (lilv_node_is_float(min)) {
+ min_values[i] = lilv_node_as_float(min);
+ } else if (lilv_node_is_int(min)) {
+ min_values[i] = lilv_node_as_int(min);
+ } else {
+ min_values[i] = NAN;
+ }
+ }
+
+ if (max_values) {
+ if (lilv_node_is_float(max)) {
+ max_values[i] = lilv_node_as_float(max);
+ } else if (lilv_node_is_int(max)) {
+ max_values[i] = lilv_node_as_int(max);
+ } else {
+ max_values[i] = NAN;
+ }
+ }
+
+ if (def_values) {
+ if (lilv_node_is_float(def)) {
+ def_values[i] = lilv_node_as_float(def);
+ } else if (lilv_node_is_int(def)) {
+ def_values[i] = lilv_node_as_int(def);
+ } else {
+ def_values[i] = NAN;
+ }
+ }
lilv_node_free(def);
lilv_node_free(min);