13
0

add Playlist::find_prev_region_start()

This commit is contained in:
Paul Davis 2021-06-18 12:45:30 -06:00
parent b04ea33f18
commit 7e3b22e519
2 changed files with 28 additions and 0 deletions

View File

@ -231,6 +231,8 @@ public:
bool region_is_shuffle_constrained (boost::shared_ptr<Region>);
bool has_region_at (samplepos_t const) const;
samplepos_t find_prev_region_start (samplepos_t sample);
bool uses_source (boost::shared_ptr<const Source> src, bool shallow = false) const;
void deep_sources (std::set<boost::shared_ptr<Source> >&) const;

View File

@ -2082,6 +2082,32 @@ Playlist::find_next_region (samplepos_t sample, RegionPoint point, int dir)
return ret;
}
samplepos_t
Playlist::find_prev_region_start (samplepos_t sample)
{
RegionReadLock rlock (this);
samplepos_t closest = max_samplepos;
samplepos_t ret = -1;
for (RegionList::reverse_iterator i = regions.rbegin (); i != regions.rend (); ++i) {
boost::shared_ptr<Region> r = (*i);
sampleoffset_t distance;
const samplepos_t first_sample = r->first_sample ();
if (first_sample < sample) {
distance = sample - first_sample;
if (distance < closest) {
ret = first_sample;
closest = distance;
}
}
}
return ret;
}
samplepos_t
Playlist::find_next_region_boundary (samplepos_t sample, int dir)
{