summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-12-02 03:36:33 -0500
committerDavid Robillard <d@drobilla.net>2014-12-02 03:36:33 -0500
commitcf47d71761ec5b7539a4dce493e711387f442e43 (patch)
tree5a2f200c22019642bfa8612592a7a8fc8be7ea1a
parent07a381a8f5572ae7550c60e5b1bd18c3dcdc7369 (diff)
Fix lost MIDI events due to broken range check.
-rw-r--r--libs/ardour/ardour/event_type_map.h2
-rw-r--r--libs/ardour/event_type_map.cc13
-rw-r--r--libs/evoral/evoral/TypeMap.hpp2
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 <cstdio>
#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;
};