From cf47d71761ec5b7539a4dce493e711387f442e43 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 2 Dec 2014 03:36:33 -0500 Subject: [PATCH] Fix lost MIDI events due to broken range check. --- libs/ardour/ardour/event_type_map.h | 2 +- libs/ardour/event_type_map.cc | 13 +++++++++---- libs/evoral/evoral/TypeMap.hpp | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/libs/ardour/ardour/event_type_map.h b/libs/ardour/ardour/event_type_map.h index 0d7e623754..8110a28f9d 100644 --- a/libs/ardour/ardour/event_type_map.h +++ b/libs/ardour/ardour/event_type_map.h @@ -49,7 +49,7 @@ public: Evoral::Parameter from_symbol(const std::string& str) const; std::string to_symbol(const Evoral::Parameter& param) const; - const Evoral::ParameterDescriptor& descriptor(const Evoral::Parameter& param) const; + Evoral::ParameterDescriptor descriptor(const Evoral::Parameter& param) const; void set_descriptor(const Evoral::Parameter& param, const Evoral::ParameterDescriptor& desc); diff --git a/libs/ardour/event_type_map.cc b/libs/ardour/event_type_map.cc index 14f609bd8a..f818b30172 100644 --- a/libs/ardour/event_type_map.cc +++ b/libs/ardour/event_type_map.cc @@ -22,6 +22,7 @@ #include #include "ardour/types.h" #include "ardour/event_type_map.h" +#include "ardour/parameter_descriptor.h" #include "ardour/parameter_types.h" #include "ardour/uri_map.h" #include "evoral/Parameter.hpp" @@ -243,13 +244,17 @@ EventTypeMap::to_symbol(const Evoral::Parameter& param) const } } -const Evoral::ParameterDescriptor& +Evoral::ParameterDescriptor EventTypeMap::descriptor(const Evoral::Parameter& param) const { - static const Evoral::ParameterDescriptor nil; - + // Found an existing (perhaps custom) descriptor Descriptors::const_iterator d = _descriptors.find(param); - return (d != _descriptors.end()) ? d->second : nil; + if (d != _descriptors.end()) { + return d->second; + } + + // Add default descriptor and return that + return ARDOUR::ParameterDescriptor(param); } void diff --git a/libs/evoral/evoral/TypeMap.hpp b/libs/evoral/evoral/TypeMap.hpp index 154cdff613..d09439daa6 100644 --- a/libs/evoral/evoral/TypeMap.hpp +++ b/libs/evoral/evoral/TypeMap.hpp @@ -52,7 +52,7 @@ public: virtual uint32_t midi_event_type(uint8_t status) const = 0; /** Return the description of a parameter. */ - virtual const ParameterDescriptor& descriptor(const Parameter& param) const = 0; + virtual ParameterDescriptor descriptor(const Parameter& param) const = 0; virtual std::string to_symbol(const Parameter& param) const = 0; }; -- 2.30.2