diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-28 15:05:48 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-28 15:05:56 -0400 |
commit | 54d5f36311d041ce3d5fa3e6ed14fde30bcb70b7 (patch) | |
tree | 8bb084f1feea765dd33de4ace30c0c1030da40fc /libs/ardour/ardour/session_playlists.h | |
parent | dbb26485df31bbf3bd0aeb83e3e01d42e25fbd07 (diff) |
changes in logic used by source cleanup to avoid endless recursion in sessions with deeply nested/recursive compound regions.
This also fixes some potentially dangerous cleanup logic related to two sources with the same name (but different paths)
Diffstat (limited to 'libs/ardour/ardour/session_playlists.h')
-rw-r--r-- | libs/ardour/ardour/session_playlists.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libs/ardour/ardour/session_playlists.h b/libs/ardour/ardour/session_playlists.h index e7ad1624dd..cc6d301b31 100644 --- a/libs/ardour/ardour/session_playlists.h +++ b/libs/ardour/ardour/session_playlists.h @@ -54,12 +54,14 @@ public: uint32_t source_use_count (boost::shared_ptr<const Source> src) const; uint32_t region_use_count (boost::shared_ptr<Region> region) const; template<class T> void foreach (T *obj, void (T::*func)(boost::shared_ptr<Playlist>)); + void foreach (boost::function<void(boost::shared_ptr<const Playlist>)> functor); void get (std::vector<boost::shared_ptr<Playlist> >&) const; void unassigned (std::list<boost::shared_ptr<Playlist> > & list); void destroy_region (boost::shared_ptr<Region>); boost::shared_ptr<Crossfade> find_crossfade (const PBD::ID &); void sync_all_regions_with_regions (); std::vector<boost::shared_ptr<Playlist> > playlists_for_track (boost::shared_ptr<Track>) const; + uint32_t n_playlists() const; private: friend class Session; @@ -69,7 +71,6 @@ private: void remove_weak (boost::weak_ptr<Playlist>); void track (bool, boost::weak_ptr<Playlist>); - uint32_t n_playlists() const; void find_equivalent_playlist_regions (boost::shared_ptr<Region>, std::vector<boost::shared_ptr<Region> >& result); void update_after_tempo_map_change (); void add_state (XMLNode *, bool); |