_default_value = id.normal();
_lookup_cache.left = -1;
_lookup_cache.range.first = _events.end();
+ _lookup_cache.range.second = _events.end();
_search_cache.left = -1;
_search_cache.first = _events.end();
_sort_pending = false;
_max_yval = other._max_yval;
_default_value = other._default_value;
_lookup_cache.range.first = _events.end();
+ _lookup_cache.range.second = _events.end();
_search_cache.first = _events.end();
_sort_pending = false;
new_write_pass = true;
_max_yval = other._max_yval;
_default_value = other._default_value;
_lookup_cache.range.first = _events.end();
+ _lookup_cache.range.second = _events.end();
_search_cache.first = _events.end();
_sort_pending = false;
ControlList::mark_dirty () const
{
_lookup_cache.left = -1;
+ _lookup_cache.range.first = _events.end();
+ _lookup_cache.range.second = _events.end();
_search_cache.left = -1;
+ _search_cache.first = _events.end();
if (_curve) {
_curve->mark_dirty();
{
/* Only do the range lookup if x is in a different range than last time
* this was called (or if the search cache has been marked "dirty" (left<0) */
- if (!_events.empty() && ((_search_cache.left < 0) || (_search_cache.left > start))) {
+ if (_events.empty()) {
+ _search_cache.first = _events.end();
+ _search_cache.left = 0;
+ } else if ((_search_cache.left < 0) || (_search_cache.left > start)) {
const ControlEvent start_point (start, 0);