diff options
Diffstat (limited to 'libs/evoral/evoral/ControlList.hpp')
-rw-r--r-- | libs/evoral/evoral/ControlList.hpp | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/libs/evoral/evoral/ControlList.hpp b/libs/evoral/evoral/ControlList.hpp index 1e546e04fa..c6127a4e9b 100644 --- a/libs/evoral/evoral/ControlList.hpp +++ b/libs/evoral/evoral/ControlList.hpp @@ -124,10 +124,8 @@ public: virtual bool clamp_value (double& /*when*/, double& /*value*/) const { return true; } - void rt_add (double when, double value); - void add (double when, double value); + void add (double when, double value, bool erase_since_last_add = false); void fast_simple_add (double when, double value); - void merge_nascent (double when); void erase_range (double start, double end); void erase (iterator); @@ -245,6 +243,7 @@ public: virtual bool touching() const { return false; } virtual bool writing() const { return false; } virtual bool touch_enabled() const { return false; } + void start_write_pass (double time); void write_pass_finished (double when); /** Emitted when mark_dirty() is called on this object */ @@ -257,6 +256,8 @@ public: bool operator!= (ControlList const &) const; + void invalidate_insert_iterator (); + protected: /** Called by unlocked_eval() to handle cases of 3 or more control points. */ @@ -287,21 +288,14 @@ protected: Curve* _curve; - struct NascentInfo { - EventList events; - double start_time; - double end_time; - double same_value_cnt; - - NascentInfo (double start = -1.0) - : start_time (start) - , end_time (-1.0) - , same_value_cnt (0) - {} - }; - - std::list<NascentInfo*> nascent; static double _thinning_factor; + + private: + iterator insert_iterator; + double insert_position; + bool new_write_pass; + bool did_write_during_pass; + void unlocked_invalidate_insert_iterator (); }; } // namespace Evoral |