20 #ifndef __ardour_playlist_h__
21 #define __ardour_playlist_h__
27 #include <boost/shared_ptr.hpp>
28 #include <boost/enable_shared_from_this.hpp>
29 #include <boost/utility.hpp>
93 void update (
const RegionListProperty::ChangeRecord&);
94 void clear_owned_changes ();
95 void rdiff (std::vector<Command*>&)
const;
99 uint32_t max_source_level ()
const;
101 void set_region_ownership ();
103 virtual void clear (
bool with_signals=
true);
104 virtual void dump ()
const;
108 bool used ()
const {
return _refcnt != 0; }
110 bool set_name (
const std::string& str);
116 void set_frozen (
bool yn);
120 uint32_t n_regions()
const;
121 bool all_regions_empty()
const;
122 std::pair<framepos_t, framepos_t> get_extent ()
const;
123 std::pair<framepos_t, framepos_t> get_extent_with_endspace()
const;
146 void fade_range (std::list<AudioRange>&);
153 el.push_back (exclude);
154 ripple (at, distance, &el);
157 void update_after_tempo_map_change ();
186 virtual int set_state (
const XMLNode&,
int version);
197 PBD::Signal2<void,std::list< Evoral::RangeMove<framepos_t> >
const &,
bool>
RangesMoved;
204 static std::string bump_name (std::string old_name,
Session&);
207 void thaw (
bool from_undo =
false);
215 void set_orig_track_id (
const PBD::ID& did);
221 void sync_all_regions_with_regions ();
227 void drop_regions ();
238 void set_capture_insertion_in_progress (
bool yn);
253 :
Glib::Threads::RWLock::WriterLock (pl->region_lock)
255 , block_notify (do_block_notify) {
257 playlist->delay_notifications();
262 Glib::Threads::RWLock::WriterLock::release ();
264 playlist->release_notifications ();
309 void init (
bool hide);
312 return g_atomic_int_get (&block_notifications) != 0 ||
313 g_atomic_int_get (&ignore_state_changes) != 0;
316 void delay_notifications ();
317 void release_notifications (
bool from_undo =
false);
318 virtual void flush_notifications (
bool from_undo =
false);
319 void clear_pending ();
321 void _set_sort_id ();
327 void notify_layering_changed ();
328 void notify_contents_changed ();
334 void mark_session_dirty();
342 void sort_regions ();
366 std::pair<framepos_t, framepos_t> _get_extent()
const;
369 std::list<AudioRange>& ranges,
bool result_is_hidden);
397 void setup_layering_indices (
RegionList const &);
virtual void pre_uncombine(std::vector< boost::shared_ptr< Region > > &, boost::shared_ptr< Region >)
bool _capture_insertion_underway
EditMode get_edit_mode() const
LIBARDOUR_API PBD::PropertyDescriptor< bool > hidden
RegionReadLock(Playlist *pl)
const DataType & data_type() const
LIBPBD_API void split(std::string, std::vector< std::string > &, char)
bool pending_contents_change
PBD::Signal0< void > ContentsChanged
LIBARDOUR_API GQuark paste
bool holding_state() const
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > start
virtual void pre_combine(std::vector< boost::shared_ptr< Region > > &)
Glib::Threads::RWLock region_lock
virtual boost::shared_ptr< Crossfade > find_crossfade(const PBD::ID &) const
std::list< Evoral::RangeMove< framepos_t > > pending_range_moves
uint32_t combine_ops() const
PBD::Signal0< void > LayeringChanged
const PBD::ID & get_orig_track_id() const
PBD::Signal0< void > NameChanged
std::pair< boost::shared_ptr< Region >, boost::shared_ptr< Region > > TwoRegions
std::set< boost::shared_ptr< Region > > all_regions
LIBARDOUR_API PBD::PropertyDescriptor< float > shift
RegionList pending_bounds
PBD::Signal1< void, boost::weak_ptr< Region > > RegionRemoved
gint ignore_state_changes
PBD::Signal2< void, std::list< Evoral::RangeMove< framepos_t > > const &, bool > RangesMoved
std::set< boost::shared_ptr< Region > > pending_removes
LIBARDOUR_API void make_property_quarks()
RegionListProperty regions
LIBARDOUR_API PBD::PropertyDescriptor< bool > regions
PBD::Signal1< void, std::list< Evoral::Range< framepos_t > > const & > RegionsExtended
std::list< boost::shared_ptr< Region > > RegionList
void ripple(framepos_t at, framecnt_t distance, boost::shared_ptr< Region > exclude)
RegionWriteLock(Playlist *pl, bool do_block_notify=true)
PBD::Signal1< void, boost::weak_ptr< Region > > RegionAdded
const RegionListProperty & region_list() const
virtual void post_combine(std::vector< boost::shared_ptr< Region > > &, boost::shared_ptr< Region >)
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > position
std::set< boost::shared_ptr< Region > > pending_adds
PBD::Signal1< void, bool > InUse
virtual void remove_dependents(boost::shared_ptr< Region >)
PBD::ScopedConnectionList region_state_changed_connections
std::list< Evoral::Range< framepos_t > > pending_region_extensions
LIBARDOUR_API bool init(bool with_vst, bool try_optimization, const char *localedir)