From 6304261b980419eaafde84bc32ff5e8f1c7aa236 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 27 Dec 2011 01:42:49 +0000 Subject: Re-work layering in possibly debatable ways. Sketchy docs in doc/layering. git-svn-id: svn://localhost/ardour2/branches/3.0@11088 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/region.h | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) (limited to 'libs/ardour/ardour/region.h') diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h index a9d18f95ca..4315ed7aa8 100644 --- a/libs/ardour/ardour/region.h +++ b/libs/ardour/ardour/region.h @@ -112,6 +112,7 @@ class Region framepos_t start () const { return _start; } framecnt_t length () const { return _length; } layer_t layer () const { return _layer; } + Evoral::Range bounds () const; framecnt_t source_length(uint32_t n) const; uint32_t max_source_level () const; @@ -201,7 +202,7 @@ class Region void cut_front (framepos_t new_position); void cut_end (framepos_t new_position); - void set_layer (layer_t l); /* ONLY Playlist can call this */ + void set_layer (layer_t l); /* ONLY Playlist should call this */ void raise (); void lower (); void raise_to_top (); @@ -251,8 +252,8 @@ class Region virtual boost::shared_ptr get_parent() const; - uint64_t last_layer_op() const { return _last_layer_op; } - void set_last_layer_op (uint64_t when); + uint64_t last_layer_op (LayerOp) const; + void set_last_layer_op (LayerOp, uint64_t); virtual bool is_dependent() const { return false; } virtual bool depends_on (boost::shared_ptr /*other*/) const { return false; } @@ -293,16 +294,13 @@ class Region void invalidate_transients (); - void set_pending_explicit_relayer (bool p) { - _pending_explicit_relayer = p; - } + void drop_sources (); - bool pending_explicit_relayer () const { - return _pending_explicit_relayer; + /** @return our bounds the last time our relayer() method was called */ + Evoral::Range last_relayer_bounds () const { + return Evoral::Range (_last_relayer_bounds_from, _last_relayer_bounds_to); } - void drop_sources (); - protected: friend class RegionFactory; @@ -387,16 +385,17 @@ class Region PBD::Property _shift; PBD::EnumProperty _position_lock_style; + /* XXX: could use a Evoral::Range<> but I'm too lazy to make PBD::Property serialize such a thing nicely */ + PBD::Property _last_relayer_bounds_from; ///< from of our bounds last time relayer() was called + PBD::Property _last_relayer_bounds_to; ///< to of our bounds last time relayer() was called + PBD::Property _last_layer_op_add; + PBD::Property _last_layer_op_bounds_change; + framecnt_t _last_length; framepos_t _last_position; mutable RegionEditState _first_edit; Timecode::BBT_Time _bbt_time; - uint64_t _last_layer_op; ///< timestamp - - /** true if this region has had its layer explicitly set since the playlist last relayered */ - bool _pending_explicit_relayer; - void register_properties (); void use_sources (SourceList const &); -- cgit v1.2.3