101 void update (
const RegionListProperty::ChangeRecord&);
103 void rdiff (std::vector<PBD::Command*>&)
const;
135 virtual void clear (
bool with_signals =
true);
142 bool used ()
const {
return _refcnt.load () != 0; }
147 bool shared ()
const {
return !_shared_with_ids.empty (); }
191 void shuffle (std::shared_ptr<Region>,
int dir);
197 el.push_back (exclude);
199 ripple (at, distance, &el);
204 std::shared_ptr<Playlist>
cut (std::list<TimelineRange>&);
205 std::shared_ptr<Playlist>
copy (std::list<TimelineRange>&);
238 bool uses_source (std::shared_ptr<const Source> src,
bool shallow =
false)
const;
267 void thaw (
bool from_undo =
false);
291 return std::shared_ptr<Crossfade> ();
313 :
Glib::
Threads::RWLock::ReaderLock (pl->region_lock)
323 :
Glib::
Threads::RWLock::WriterLock (pl->region_lock)
325 , block_notify (do_block_notify)
328 playlist->delay_notifications ();
337 playlist->release_notifications ();
393 return block_notifications.load () != 0;
441 std::list<TimelineRange>& ranges);
452 typedef std::pair<std::shared_ptr<Region>, std::shared_ptr<Region> >
TwoRegions;
455 virtual void pre_combine (std::vector<std::shared_ptr<Region> >&) {}
457 virtual void post_combine (std::vector<std::shared_ptr<Region> >&, std::shared_ptr<Region>) {}
461 virtual void pre_uncombine (std::vector<std::shared_ptr<Region> >&, std::shared_ptr<Region>) {}
RegionReadLock(Playlist const *pl)
RegionWriteLock(Playlist *pl, bool do_block_notify=true)
void clear_owned_changes()
void lower_region_to_bottom(std::shared_ptr< Region >)
uint32_t n_regions() const
std::shared_ptr< Playlist > cut(std::list< TimelineRange > &)
std::shared_ptr< RegionList > find_regions_at(timepos_t const &)
bool all_regions_empty() const
void notify_contents_changed()
void duplicate_until(std::shared_ptr< Region >, timepos_t &position, timecnt_t const &gap, timepos_t const &end)
virtual void pre_uncombine(std::vector< std::shared_ptr< Region > > &, std::shared_ptr< Region >)
virtual bool region_changed(const PBD::PropertyChange &, std::shared_ptr< Region >)
void time_domain_changed()
const DataType & data_type() const
uint32_t combine_ops() const
timepos_t find_prev_region_start(timepos_t const &sample)
std::shared_ptr< Playlist > copy(timepos_t const &start, timecnt_t const &cnt)
std::shared_ptr< Region > find_next_region(timepos_t const &, RegionPoint point, int dir)
void foreach_region(std::function< void(std::shared_ptr< Region >)>)
void start_domain_bounce(Temporal::DomainBounceInfo &)
void rdiff(std::vector< PBD::Command * > &) const
const RegionListProperty & region_list_property() const
bool holding_state() const
bool _playlist_shift_active
bool region_is_audible_at(std::shared_ptr< Region >, timepos_t const &)
std::shared_ptr< Region > top_region_at(timepos_t const &)
std::set< std::shared_ptr< Region > > pending_removes
bool SoloSelectedListIncludes(const Region *)
void duplicate_range(TimelineRange &, float times)
bool set_name(const std::string &str)
virtual std::shared_ptr< Crossfade > find_crossfade(const PBD::ID &) const
void setup_layering_indices(RegionList const &)
void raise_region_to_top(std::shared_ptr< Region >)
std::set< const Region * > _soloSelectedRegions
virtual void clear(bool with_signals=true)
PBD::Signal< void(bool)> InUse
PBD::Signal< void(std::list< Temporal::RangeMove > const &, bool)> RangesMoved
void region_deleted(std::shared_ptr< Region >)
PBD::Signal< void(std::list< Temporal::Range > const &)> RegionsExtended
std::pair< timepos_t, timepos_t > get_extent_with_endspace() const
std::shared_ptr< Playlist > cut_copy(std::shared_ptr< Playlist >(Playlist::*pmf)(timepos_t const &, timecnt_t const &), std::list< TimelineRange > &ranges)
bool region_is_shuffle_constrained(std::shared_ptr< Region >)
int paste(std::shared_ptr< Playlist >, timepos_t const &position, float times)
std::set< std::shared_ptr< Region > > all_regions
void notify_region_start_trimmed(std::shared_ptr< Region >)
void update(const RegionListProperty::ChangeRecord &)
void duplicate_ranges(std::list< TimelineRange > &, float times)
std::shared_ptr< Region > region_by_id(const PBD::ID &) const
timepos_t find_next_top_layer_position(timepos_t const &) const
virtual std::shared_ptr< Region > combine(const RegionList &, std::shared_ptr< Track >)
std::shared_ptr< RegionList > regions_with_start_within(Temporal::TimeRange)
void thaw(bool from_undo=false)
bool add_region_internal(std::shared_ptr< Region >, timepos_t const &position, ThawList &thawlist)
uint32_t region_use_count(std::shared_ptr< Region >) const
bool has_region_at(timepos_t const &) const
bool uses_source(std::shared_ptr< const Source > src, bool shallow=false) const
std::list< Temporal::RangeMove > pending_range_moves
std::list< Temporal::TimeRange > pending_region_extensions
void delay_notifications()
void add_region(std::shared_ptr< Region >, timepos_t const &position, float times=1, bool auto_partition=false)
static std::string bump_name(std::string old_name, Session &)
void ripple_unlocked(timepos_t const &at, timecnt_t const &distance, RegionList *exclude, ThawList &thawlist, bool notify=true)
virtual bool destroy_region(std::shared_ptr< Region >)=0
bool pending_contents_change
int remove_region_internal(std::shared_ptr< Region >, ThawList &thawlist)
virtual int set_state(const XMLNode &, int version)
std::list< PBD::ID > _shared_with_ids
void notify_region_end_trimmed(std::shared_ptr< Region >)
void raise_region(std::shared_ptr< Region >)
std::shared_ptr< RegionList > region_list()
Playlist(std::shared_ptr< const Playlist >, std::string name, bool hidden=false)
XMLNode & get_state() const
RegionListProperty regions
PBD::Signal< void(std::weak_ptr< Region >)> RegionAdded
void ripple_locked(timepos_t const &at, timecnt_t const &distance, RegionList *exclude)
virtual void region_going_away(std::weak_ptr< Region >)
void coalesce_and_check_crossfades(std::list< Temporal::TimeRange >)
void lower_region(std::shared_ptr< Region >)
virtual void _split_region(std::shared_ptr< Region >, timepos_t const &position, ThawList &thawlist)
std::atomic< int > block_notifications
void notify_region_added(std::shared_ptr< Region >)
std::shared_ptr< RegionList > regions_touched(timepos_t const &start, timepos_t const &end)
void split(timepos_t const &at)
void shuffle(std::shared_ptr< Region >, int dir)
void notify_region_removed(std::shared_ptr< Region >)
void replace_region(std::shared_ptr< Region > old, std::shared_ptr< Region > newr, timepos_t const &pos)
PBD::ScopedConnectionList region_drop_references_connections
void set_layer(std::shared_ptr< Region >, double)
void copy_regions(RegionList &) const
static void make_property_quarks()
static std::string generate_pgroup_id()
PBD::ScopedConnectionList region_state_changed_connections
bool shared_with(const PBD::ID &) const
void RemoveFromSoloSelectedList(const Region *)
void split_region(std::shared_ptr< Region >, timepos_t const &position)
PBD::Signal< void()> NameChanged
Playlist(std::shared_ptr< const Playlist >, timepos_t const &start, timepos_t const &cnt, std::string name, bool hidden=false)
void partition_internal(timepos_t start, timepos_t end, bool cutting, ThawList &thawlist)
std::shared_ptr< Region > find_region(const PBD::ID &) const
const PBD::ID & get_orig_track_id() const
timepos_t find_next_region_boundary(timepos_t const &, int dir)
void sync_all_regions_with_regions()
void release_notifications(bool from_undo=false)
void update_after_tempo_map_change()
bool _capture_insertion_underway
void set_orig_track_id(const PBD::ID &did)
void set_capture_insertion_in_progress(bool yn)
void get_region_list_equivalent_regions(std::shared_ptr< Region >, std::vector< std::shared_ptr< Region > > &)
void remove_region(std::shared_ptr< Region >)
uint32_t count_regions_at(timepos_t const &) const
virtual void uncombine(std::shared_ptr< Region >)
std::shared_ptr< Region > top_unmuted_region_at(timepos_t const &)
void get_source_equivalent_regions(std::shared_ptr< Region >, std::vector< std::shared_ptr< Region > > &)
void region_bounds_changed(const PBD::PropertyChange &, std::shared_ptr< Region >)
std::shared_ptr< Playlist > cut(timepos_t const &start, timecnt_t const &cnt)
void ripple(timepos_t const &at, timecnt_t const &distance, std::shared_ptr< Region > exclude)
void ripple(timepos_t const &at, timecnt_t const &distance, RegionList *exclude)
std::shared_ptr< RegionList > regions_touched_locked(timepos_t const &start, timepos_t const &end, bool with_tail)
std::pair< timepos_t, timepos_t > get_extent() const
void notify_layering_changed()
void duplicate(std::shared_ptr< Region >, timepos_t &position, float times)
RegionList pending_bounds
std::optional< std::pair< timepos_t, timepos_t > > _cached_extent
void notify_state_changed(const PBD::PropertyChange &)
virtual void flush_notifications(bool from_undo=false)
void set_region_ownership()
PBD::Signal< void(std::weak_ptr< Region >)> RegionRemoved
std::atomic< int > _refcnt
void shift(timepos_t const &at, timecnt_t const &distance, bool move_intersected)
std::shared_ptr< RegionList > regions_with_end_within(Temporal::TimeRange)
void region_changed_proxy(const PBD::PropertyChange &, std::weak_ptr< Region >)
std::pair< timepos_t, timepos_t > _get_extent() const
layer_t top_layer() const
Playlist(Session &, std::string name, DataType type, bool hidden=false)
void deep_sources(std::set< std::shared_ptr< Source > > &) const
void duplicate(std::shared_ptr< Region >, timepos_t &position, timecnt_t const &gap, float times)
void partition(timepos_t const &start, timepos_t const &end, bool cut=false)
std::shared_ptr< RegionList > regions_at(timepos_t const &sample)
virtual void dump() const
void share_with(const PBD::ID &)
uint32_t max_source_level() const
PBD::Signal< void()> LayeringChanged
void notify_region_moved(std::shared_ptr< Region >)
virtual void post_combine(std::vector< std::shared_ptr< Region > > &, std::shared_ptr< Region >)
virtual XMLNode & state(bool) const
void finish_domain_bounce(Temporal::DomainBounceInfo &)
void nudge_after(timepos_t const &start, timecnt_t const &distance, bool forwards)
void set_pgroup_id(std::string pgid)
void remove_gaps(timecnt_t const &gap_threshold, timecnt_t const &leave_gap, std::function< void(timepos_t, timecnt_t)> gap_callback)
std::pair< std::shared_ptr< Region >, std::shared_ptr< Region > > TwoRegions
std::set< std::shared_ptr< Region > > pending_adds
void rdiff_and_add_command(Session *)
samplepos_t find_next_transient(timepos_t const &position, int dir)
PBD::Signal< void()> ContentsChanged
void mark_session_dirty()
bool SoloSelectedActive()
Glib::Threads::RWLock region_lock
void get_equivalent_regions(std::shared_ptr< Region >, std::vector< std::shared_ptr< Region > > &)
void fade_range(std::list< TimelineRange > &)
virtual void pre_combine(std::vector< std::shared_ptr< Region > > &)
std::shared_ptr< RegionList > audible_regions_at(timepos_t const &)
void AddToSoloSelectedList(const Region *)
std::shared_ptr< Playlist > copy(std::list< TimelineRange > &)
void unshare_with(const PBD::ID &)
Playlist(Session &, const XMLNode &, DataType type, bool hidden=false)
RegionListProperty * clone() const
RegionListProperty(Playlist &)
void get_content_as_xml(std::shared_ptr< Region >, XMLNode &) const
RegionListProperty * create() const
RegionListProperty(RegionListProperty const &p)
std::shared_ptr< Region > get_content_from_xml(XMLNode const &) const
GtkImageIconNameData name
PBD::PropertyDescriptor< bool > hidden
PBD::PropertyDescriptor< std::string > name
PBD::PropertyDescriptor< bool > regions
PBD::PropertyDescriptor< timepos_t > start
std::list< std::shared_ptr< Region > > RegionList
Temporal::samplepos_t samplepos_t