summaryrefslogtreecommitdiff
path: root/libs/ardour/track.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-12-10 19:20:15 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-12-10 19:20:15 +0000
commitd23a6de077181caa24af52229bb040c87ed34ebd (patch)
tree664ec7adbdf87826aced9b8d02d6b2603bf5d61d /libs/ardour/track.cc
parent6e211e27e2027da328b6fe117f10e1962c007afb (diff)
fix for most (all? we can dream ...) issues involved in #4399 (editing multiply-applies operations to playlists used more than once), and as a side-issue, fix playlist selection which broke when we hid Diskstreams inside Tracks by using orig_track_id() rather than orig_diskstream_id()
git-svn-id: svn://localhost/ardour2/branches/3.0@10968 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/track.cc')
-rw-r--r--libs/ardour/track.cc24
1 files changed, 19 insertions, 5 deletions
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc
index 9d6b82e4c0..8a4931d336 100644
--- a/libs/ardour/track.cc
+++ b/libs/ardour/track.cc
@@ -115,6 +115,8 @@ Track::set_state (const XMLNode& node, int version)
}
}
+ _diskstream->playlist()->set_orig_track_id (id());
+
/* set rec-enable control *AFTER* setting up diskstream, because it may
want to operate on the diskstream as it sets its own state
*/
@@ -694,13 +696,25 @@ Track::use_playlist (boost::shared_ptr<Playlist> p)
int
Track::use_copy_playlist ()
{
- return _diskstream->use_copy_playlist ();
+ int ret = _diskstream->use_copy_playlist ();
+
+ if (ret == 0) {
+ _diskstream->playlist()->set_orig_track_id (id());
+ }
+
+ return ret;
}
int
Track::use_new_playlist ()
{
- return _diskstream->use_new_playlist ();
+ int ret = _diskstream->use_new_playlist ();
+
+ if (ret == 0) {
+ _diskstream->playlist()->set_orig_track_id (id());
+ }
+
+ return ret;
}
void
@@ -715,10 +729,10 @@ Track::set_align_choice (AlignChoice s, bool force)
_diskstream->set_align_choice (s, force);
}
-PBD::ID const &
-Track::diskstream_id () const
+bool
+Track::using_diskstream_id (PBD::ID id) const
{
- return _diskstream->id ();
+ return (id == _diskstream->id ());
}
void