add Playlist::find_prev_region_start()
This commit is contained in:
parent
b04ea33f18
commit
7e3b22e519
@ -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;
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user