Fix minimum/maximum discovery for integer params (from Hanspeter Portner)
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 19 Dec 2016 23:10:36 +0000 (23:10 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 19 Dec 2016 23:10:36 +0000 (23:10 +0000)
libs/ardour/lv2_plugin.cc

index cae4a299113bc0fafb953d03220d9669883177de..24fa22dcfd4bf747770679d51ffa24dc6653f0d7 100644 (file)
@@ -1824,14 +1824,26 @@ load_parameter_descriptor(LV2World&            world,
        if (label) {
                desc.label = lilv_node_as_string(label);
        }
-       if (def && lilv_node_is_float(def)) {
-               desc.normal = lilv_node_as_float(def);
+       if (def) {
+               if (lilv_node_is_float(def)) {
+                       desc.normal = lilv_node_as_float(def);
+               } else if (lilv_node_is_int(def)) {
+                       desc.normal = lilv_node_as_int(def);
+               }
        }
-       if (minimum && lilv_node_is_float(minimum)) {
-               desc.lower = lilv_node_as_float(minimum);
+       if (minimum) {
+               if (lilv_node_is_float(minimum)) {
+                       desc.lower = lilv_node_as_float(minimum);
+               } else if (lilv_node_is_int(minimum)) {
+                       desc.lower = lilv_node_as_int(minimum);
+               }
        }
-       if (maximum && lilv_node_is_float(maximum)) {
-               desc.upper = lilv_node_as_float(maximum);
+       if (maximum) {
+               if (lilv_node_is_float(maximum)) {
+                       desc.upper = lilv_node_as_float(maximum);
+               } else if (lilv_node_is_int(maximum)) {
+                       desc.upper = lilv_node_as_int(maximum);
+               }
        }
        load_parameter_descriptor_units(lworld, desc, units);
        desc.datatype      = datatype;