From d23a6de077181caa24af52229bb040c87ed34ebd Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 10 Dec 2011 19:20:15 +0000 Subject: 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 --- libs/ardour/track.cc | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'libs/ardour/track.cc') 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 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 -- cgit v1.2.3