diff options
author | Carl Hetherington <carl@carlh.net> | 2010-08-22 23:53:00 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-08-22 23:53:00 +0000 |
commit | 74801c321279d166cd1e47e79ffdfd9b33e08ccc (patch) | |
tree | a60fe1fc9ca2a8720ba1de9dbec24028b8cc9b9d /libs/ardour | |
parent | 71a4796dc3dbf8a7fe1df5c5d7acea388b40eae0 (diff) |
Move some RegionListProperty methods up to SequenceProperty.
git-svn-id: svn://localhost/ardour2/branches/3.0@7668 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/playlist.h | 15 | ||||
-rw-r--r-- | libs/ardour/playlist.cc | 36 |
2 files changed, 5 insertions, 46 deletions
diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h index 450e1dc75f..d87c6cb3a0 100644 --- a/libs/ardour/ardour/playlist.h +++ b/libs/ardour/ardour/playlist.h @@ -59,28 +59,19 @@ namespace Properties { extern PBD::PropertyDescriptor<bool> regions; } -class RegionListProperty : public PBD::SequenceProperty<std::list<boost::shared_ptr<Region > > > +class RegionListProperty : public PBD::SequenceProperty<std::list<boost::shared_ptr<Region> > > { public: RegionListProperty (Playlist&); boost::shared_ptr<Region> lookup_id (const PBD::ID& id); - void diff (PBD::PropertyList& undo, PBD::PropertyList& redo, Command*) const; - bool involves (boost::shared_ptr<Region>); private: - friend class Playlist; - std::list<boost::shared_ptr<Region> > rlist() { return _val; } + PBD::SequenceProperty<std::list<boost::shared_ptr<Region> > >* create () const; + friend class Playlist; /* we live and die with our playlist, no lifetime management needed */ Playlist& _playlist; - - /* create a copy of this RegionListProperty that only - has what is needed for use in a history list command. This - means that it won't contain the actual region list but - will have the added/removed list. - */ - RegionListProperty* copy_for_history () const; }; class Playlist : public SessionObject diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index 8ea84b96bf..851cf8596e 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -124,41 +124,9 @@ RegionListProperty::lookup_id (const ID& id) return ret; } -RegionListProperty* -RegionListProperty::copy_for_history () const +SequenceProperty<std::list<boost::shared_ptr<Region> > >* RegionListProperty::create () const { - RegionListProperty* copy = new RegionListProperty (_playlist); - /* this is all we need */ - copy->_change = _change; - return copy; -} - -void -RegionListProperty::diff (PropertyList& undo, PropertyList& redo, Command* cmd) const -{ - if (changed()) { - /* list of the removed/added regions since clear_history() was last called */ - RegionListProperty* a = copy_for_history (); - - /* the same list, but with removed/added lists swapped (for undo purposes) */ - RegionListProperty* b = copy_for_history (); - b->invert_changes (); - - if (cmd) { - /* whenever one of the regions emits DropReferences, make sure - that the Destructible we've been told to notify hears about - it. the Destructible is likely to be the Command being built - with this diff(). - */ - - for (set<boost::shared_ptr<Region> >::iterator i = a->change().added.begin(); i != a->change().added.end(); ++i) { - (*i)->DropReferences.connect_same_thread (*cmd, boost::bind (&Destructible::drop_references, cmd)); - } - } - - undo.add (b); - redo.add (a); - } + return new RegionListProperty (_playlist); } Playlist::Playlist (Session& sess, string nom, DataType type, bool hide) |