Tempo ramps - re-enabe audio-locked meter sections, fix more locking errors.
This commit is contained in:
parent
77abc08d6f
commit
38df1063d3
@ -466,7 +466,7 @@ MeterDialog::init (const Timecode::BBT_Time& when, double bpb, double divisor, b
|
||||
lock_styles.insert (make_pair (_("music"), PositionLockStyle::MusicTime));
|
||||
strings.push_back (_("music"));
|
||||
lock_styles.insert (make_pair (_("audio"), PositionLockStyle::AudioTime));
|
||||
strings.push_back (_("audio ur brane wul xplod"));
|
||||
strings.push_back (_("audio"));
|
||||
set_popdown_strings (lock_style, strings);
|
||||
LockStyles::iterator ls;
|
||||
for (ls = lock_styles.begin(); ls != lock_styles.end(); ++ls) {
|
||||
|
@ -327,9 +327,6 @@ class LIBARDOUR_API TempoMap : public PBD::StatefulDestructible
|
||||
|
||||
void bbt_time (framepos_t when, Timecode::BBT_Time&);
|
||||
|
||||
double tick_at_frame (framecnt_t frame) const;
|
||||
framecnt_t frame_at_tick (double tick) const;
|
||||
|
||||
double beat_at_frame (framecnt_t frame) const;
|
||||
framecnt_t frame_at_beat (double beat) const;
|
||||
|
||||
@ -421,6 +418,10 @@ private:
|
||||
Timecode::BBT_Time beats_to_bbt_locked (double beats);
|
||||
double beat_at_frame_locked (framecnt_t frame) const;
|
||||
framecnt_t frame_at_beat_locked (double beat) const;
|
||||
double tick_at_frame_locked (framecnt_t frame) const;
|
||||
framecnt_t frame_at_tick_locked (double tick) const;
|
||||
framepos_t frame_time_locked (const Timecode::BBT_Time&);
|
||||
|
||||
friend class ::BBTTest;
|
||||
friend class ::FrameposPlusBeatsTest;
|
||||
friend class ::TempoTest;
|
||||
|
@ -1405,7 +1405,7 @@ TempoMap::recompute_map (bool reassign_tempo_bbt, framepos_t end)
|
||||
pr.second = where;
|
||||
meter->set_beat (pr);
|
||||
} else {
|
||||
meter->set_frame (frame_at_tick (meter->tick()));
|
||||
meter->set_frame (frame_at_tick_locked (meter->tick()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1589,7 +1589,7 @@ TempoMap::beats_to_bbt_locked (double beats)
|
||||
}
|
||||
|
||||
double
|
||||
TempoMap::tick_at_frame (framecnt_t frame) const
|
||||
TempoMap::tick_at_frame_locked (framecnt_t frame) const
|
||||
{
|
||||
/* HOLD (at least) THE READER LOCK */
|
||||
|
||||
@ -1617,7 +1617,7 @@ TempoMap::tick_at_frame (framecnt_t frame) const
|
||||
}
|
||||
|
||||
framecnt_t
|
||||
TempoMap::frame_at_tick (double tick) const
|
||||
TempoMap::frame_at_tick_locked (double tick) const
|
||||
{
|
||||
/* HOLD THE READER LOCK */
|
||||
|
||||
@ -1649,27 +1649,27 @@ double
|
||||
TempoMap::beat_at_frame (framecnt_t frame) const
|
||||
{
|
||||
Glib::Threads::RWLock::ReaderLock lm (lock);
|
||||
return tick_at_frame (frame) / BBT_Time::ticks_per_beat;
|
||||
return tick_at_frame_locked (frame) / BBT_Time::ticks_per_beat;
|
||||
}
|
||||
|
||||
double
|
||||
TempoMap::beat_at_frame_locked (framecnt_t frame) const
|
||||
{
|
||||
return tick_at_frame (frame) / BBT_Time::ticks_per_beat;
|
||||
return tick_at_frame_locked (frame) / BBT_Time::ticks_per_beat;
|
||||
}
|
||||
|
||||
framecnt_t
|
||||
TempoMap::frame_at_beat (double beat) const
|
||||
{
|
||||
Glib::Threads::RWLock::ReaderLock lm (lock);
|
||||
return frame_at_tick (beat * BBT_Time::ticks_per_beat);
|
||||
return frame_at_tick_locked (beat * BBT_Time::ticks_per_beat);
|
||||
}
|
||||
|
||||
framecnt_t
|
||||
TempoMap::frame_at_beat_locked (double beat) const
|
||||
{
|
||||
|
||||
return frame_at_tick (beat * BBT_Time::ticks_per_beat);
|
||||
return frame_at_tick_locked (beat * BBT_Time::ticks_per_beat);
|
||||
}
|
||||
|
||||
framepos_t
|
||||
@ -1685,7 +1685,15 @@ TempoMap::frame_time (const BBT_Time& bbt)
|
||||
}
|
||||
Glib::Threads::RWLock::ReaderLock lm (lock);
|
||||
|
||||
framepos_t const ret = frame_at_beat (bbt_to_beats_locked (bbt));
|
||||
return frame_time_locked (bbt);;
|
||||
}
|
||||
|
||||
framepos_t
|
||||
TempoMap::frame_time_locked (const BBT_Time& bbt)
|
||||
{
|
||||
/* HOLD THE READER LOCK */
|
||||
|
||||
framepos_t const ret = frame_at_beat_locked (bbt_to_beats_locked (bbt));
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -1742,7 +1750,7 @@ TempoMap::round_to_beat_subdivision (framepos_t fr, int sub_num, RoundMode dir)
|
||||
{
|
||||
Glib::Threads::RWLock::ReaderLock lm (lock);
|
||||
|
||||
uint32_t ticks = (uint32_t) floor (tick_at_frame (fr) + 0.5);
|
||||
uint32_t ticks = (uint32_t) floor (tick_at_frame_locked (fr) + 0.5);
|
||||
uint32_t beats = (uint32_t) floor (ticks / BBT_Time::ticks_per_beat);
|
||||
uint32_t ticks_one_subdivisions_worth = (uint32_t)BBT_Time::ticks_per_beat / sub_num;
|
||||
|
||||
@ -1828,7 +1836,7 @@ TempoMap::round_to_beat_subdivision (framepos_t fr, int sub_num, RoundMode dir)
|
||||
/* on the subdivision, do nothing */
|
||||
}
|
||||
}
|
||||
return frame_at_tick ((beats * BBT_Time::ticks_per_beat) + ticks);
|
||||
return frame_at_tick_locked ((beats * BBT_Time::ticks_per_beat) + ticks);
|
||||
}
|
||||
|
||||
framepos_t
|
||||
@ -1874,11 +1882,11 @@ TempoMap::round_to_type (framepos_t frame, RoundMode dir, BBTPointType type)
|
||||
|
||||
case Beat:
|
||||
if (dir < 0) {
|
||||
return frame_at_beat (floor (beat_at_framepos));
|
||||
return frame_at_beat_locked (floor (beat_at_framepos));
|
||||
} else if (dir > 0) {
|
||||
return frame_at_beat (ceil (beat_at_framepos));
|
||||
return frame_at_beat_locked (ceil (beat_at_framepos));
|
||||
} else {
|
||||
return frame_at_beat (floor (beat_at_framepos + 0.5));
|
||||
return frame_at_beat_locked (floor (beat_at_framepos + 0.5));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user