+
+ DataType _type;
+
+ PBD::Property<bool> _muted;
+ PBD::Property<bool> _opaque;
+ PBD::Property<bool> _locked;
+ PBD::Property<bool> _automatic;
+ PBD::Property<bool> _whole_file;
+ PBD::Property<bool> _import;
+ PBD::Property<bool> _external;
+ PBD::Property<bool> _sync_marked;
+ PBD::Property<bool> _left_of_split;
+ PBD::Property<bool> _right_of_split;
+ PBD::Property<bool> _hidden;
+ PBD::Property<bool> _position_locked;
+ PBD::Property<bool> _valid_transients;
+ PBD::Property<framepos_t> _start;
+ PBD::Property<framecnt_t> _length;
+ PBD::Property<framepos_t> _position;
+ /** Sync position relative to the start of our file */
+ PBD::Property<framepos_t> _sync_position;
+ PBD::Property<layer_t> _layer;
+ PBD::Property<framepos_t> _ancestral_start;
+ PBD::Property<framecnt_t> _ancestral_length;
+ PBD::Property<float> _stretch;
+ PBD::Property<float> _shift;
+ PBD::EnumProperty<PositionLockStyle> _position_lock_style;
+
+ framecnt_t _last_length;
+ framepos_t _last_position;
+ mutable RegionEditState _first_edit;
+ BBT_Time _bbt_time;
+ AnalysisFeatureList _transients;
+
+ mutable uint64_t _read_data_count; ///< modified in read()
+ uint64_t _last_layer_op; ///< timestamp
+ SourceList _sources;
+ /** Used when timefx are applied, so we can always use the original source */
+ SourceList _master_sources;
+
+ /** true if this region has had its layer explicitly set since the playlist last relayered */
+ bool _pending_explicit_relayer;
+
+ boost::weak_ptr<ARDOUR::Playlist> _playlist;
+
+ virtual int _set_state (const XMLNode&, int version, PBD::PropertyChange& what_changed, bool send_signal);
+
+ void register_properties ();
+
+protected:
+ void use_sources (SourceList const &);