diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-07-13 21:05:45 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-07-13 21:05:45 +0000 |
commit | 0532e2063b73ec32d4dd108b58e90a0f20ae91b3 (patch) | |
tree | f9728e4b57f260fd5d468a9c3dd2b2dd2d97e7d7 /libs/evoral/evoral/ControlList.hpp | |
parent | b04cd7d7045dd40a1e3ae819ad3a2f9bb08a01f1 (diff) |
dramatic overhaul of automation. too long to explain here. this work is not finished - write/touch passes do not correctly overwrite existing data because the semantics of ControlList::insert_iterator need clarification. more to follow
git-svn-id: svn://localhost/ardour2/branches/3.0@13038 d708f5d6-7413-0410-9779-e7cbd77b26cf
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 |