- private:
- SourceList sources;
- SourceList master_sources; /* used when timefx are applied, so
- we can always use the original
- source.
- */
- StateManager::State* state_factory (std::string why) const;
- Change restore_state (StateManager::State&);
-
- bool copied() const { return _flags & Copied; }
- void maybe_uncopy ();
- void rename_after_first_edit ();
-
- jack_nframes_t _read_at (const SourceList&, unsigned char *buf, unsigned char *mixdown_buffer,
- char * workbuf, jack_nframes_t position, jack_nframes_t cnt,
- uint32_t chan_n = 0,
- jack_nframes_t read_frames = 0,
- jack_nframes_t skip_frames = 0) const;
-
- bool verify_start (jack_nframes_t position);
- bool verify_length (jack_nframes_t position);
- bool verify_start_mutable (jack_nframes_t& start);
- bool verify_start_and_length (jack_nframes_t start, jack_nframes_t length);
-
- void recompute_at_start() {}
- void recompute_at_end() {}
-
- void source_deleted (Source*);
+ void recompute_at_start ();
+ void recompute_at_end ();
+
+ void set_position_internal (framepos_t pos, bool allow_bbt_recompute);
+ void set_length_internal (framecnt_t len);
+ void update_length_beats ();
+
+ void model_changed ();
+ void model_automation_state_changed (Evoral::Parameter const &);
+ void model_contents_changed ();
+
+ void set_start_beats_from_start_frames ();
+ void update_after_tempo_map_change ();
+
+ std::set<Evoral::Parameter> _filtered_parameters; ///< parameters that we ask our source not to return when reading
+ PBD::ScopedConnection _model_connection;
+ PBD::ScopedConnection _source_connection;
+ PBD::ScopedConnection _model_contents_connection;
+
+ double _last_length_beats;