{
use_sources (srcs);
- if (set_state (node)) {
+ if (set_state (node, Stateful::loading_state_version)) {
throw failed_constructor();
}
{
_sources.push_back (src);
- if (set_state (node)) {
+ if (set_state (node, Stateful::loading_state_version)) {
throw failed_constructor();
}
Region::~Region ()
{
- boost::shared_ptr<Playlist> pl (playlist());
-
- if (pl) {
- for (SourceList::const_iterator i = _sources.begin(); i != _sources.end(); ++i) {
- (*i)->remove_playlist (pl);
- }
- for (SourceList::const_iterator i = _master_sources.begin(); i != _master_sources.end(); ++i) {
- (*i)->remove_playlist (pl);
- }
- }
-
notify_callbacks ();
GoingAway (); /* EMIT SIGNAL */
}
void
Region::set_playlist (boost::weak_ptr<Playlist> wpl)
{
- boost::shared_ptr<Playlist> old_playlist = (_playlist.lock());
-
- boost::shared_ptr<Playlist> pl (wpl.lock());
-
- if (old_playlist == pl) {
- return;
- }
-
- _playlist = pl;
-
- if (pl) {
- if (old_playlist) {
- for (SourceList::const_iterator i = _sources.begin(); i != _sources.end(); ++i) {
- (*i)->remove_playlist (_playlist);
- (*i)->add_playlist (pl);
- }
- for (SourceList::const_iterator i = _master_sources.begin(); i != _master_sources.end(); ++i) {
- (*i)->remove_playlist (_playlist);
- (*i)->add_playlist (pl);
- }
- } else {
- for (SourceList::const_iterator i = _sources.begin(); i != _sources.end(); ++i) {
- (*i)->add_playlist (pl);
- }
- for (SourceList::const_iterator i = _master_sources.begin(); i != _master_sources.end(); ++i) {
- (*i)->add_playlist (pl);
- }
- }
- } else {
- if (old_playlist) {
- for (SourceList::const_iterator i = _sources.begin(); i != _sources.end(); ++i) {
- (*i)->remove_playlist (old_playlist);
- }
- for (SourceList::const_iterator i = _master_sources.begin(); i != _master_sources.end(); ++i) {
- (*i)->remove_playlist (old_playlist);
- }
- }
- }
+ _playlist = wpl.lock();
}
bool
if (_first_edit != EditChangesNothing && pl) {
- _name = pl->session().new_region_name (_name);
+ _name = _session.new_region_name (_name);
_first_edit = EditChangesNothing;
send_change (ARDOUR::NameChanged);
_positional_lock_style = ps;
if (_positional_lock_style == MusicTime) {
- pl->session().tempo_map().bbt_time (_position, _bbt_time);
+ _session.tempo_map().bbt_time (_position, _bbt_time);
}
}
return;
}
- TempoMap& map (pl->session().tempo_map());
+ TempoMap& map (_session.tempo_map());
nframes_t pos = map.frame_time (_bbt_time);
set_position_internal (pos, false);
}
void
-Region::set_position (nframes_t pos, void */*src*/)
+Region::set_position (nframes_t pos, void* /*src*/)
{
if (!can_move()) {
return;
}
void
-Region::set_position_on_top (nframes_t pos, void */*src*/)
+Region::set_position_on_top (nframes_t pos, void* /*src*/)
{
if (_flags & Locked) {
return;
Region::recompute_position_from_lock_style ()
{
if (_positional_lock_style == MusicTime) {
- boost::shared_ptr<Playlist> pl (playlist());
- if (pl) {
- pl->session().tempo_map().bbt_time (_position, _bbt_time);
- }
+ _session.tempo_map().bbt_time (_position, _bbt_time);
}
}
void
-Region::nudge_position (nframes64_t n, void */*src*/)
+Region::nudge_position (nframes64_t n, void* /*src*/)
{
if (_flags & Locked) {
return;
}
void
-Region::set_start (nframes_t pos, void */*src*/)
+Region::set_start (nframes_t pos, void* /*src*/)
{
if (_flags & (Locked|PositionLocked)) {
return;
}
}
+/** @param new_endpoint New region end point, such that, for example,
+ * a region at 0 of length 10 has an endpoint of 9.
+ */
+
void
Region::trim_end (nframes_t new_endpoint, void */*src*/)
{
}
if (new_endpoint > _position) {
- trim_to_internal (_position, new_endpoint - _position, this);
+ trim_to_internal (_position, new_endpoint - _position + 1, this);
if (!_frozen) {
recompute_at_end ();
}
void
Region::set_sync_position (nframes_t absolute_pos)
{
- nframes_t file_pos;
-
- file_pos = _start + (absolute_pos - _position);
+ nframes_t const file_pos = _start + (absolute_pos - _position);
if (file_pos != _sync_position) {
}
int
-Region::set_live_state (const XMLNode& node, Change& what_changed, bool send)
+Region::set_live_state (const XMLNode& node, int /*version*/, Change& what_changed, bool send)
{
const XMLNodeList& nlist = node.children();
const XMLProperty *prop;
}
int
-Region::set_state (const XMLNode& node)
+Region::set_state (const XMLNode& node, int version)
{
const XMLProperty *prop;
Change what_changed = Change (0);
_first_edit = EditChangesNothing;
- set_live_state (node, what_changed, true);
+ set_live_state (node, version, what_changed, true);
return 0;
}
return true;
}
+bool
+Region::uses_source (boost::shared_ptr<const Source> source) const
+{
+ for (SourceList::const_iterator i = _sources.begin(); i != _sources.end(); ++i) {
+ if (*i == source) {
+ return true;
+ }
+ }
+ return false;
+}
+
sframes_t
Region::source_length(uint32_t n) const
{
boost::shared_ptr<Region> r;
boost::shared_ptr<Region const> grrr2 = boost::dynamic_pointer_cast<Region const> (shared_from_this());
- if (grrr2 && (r = pl->session().find_whole_file_parent (grrr2))) {
+ if (grrr2 && (r = _session.find_whole_file_parent (grrr2))) {
return boost::static_pointer_cast<Region> (r);
}
}