Tempo ramps - amend last commit
authornick_m <mainsbridge@gmail.com>
Sat, 30 Apr 2016 19:02:01 +0000 (05:02 +1000)
committernick_m <mainsbridge@gmail.com>
Fri, 27 May 2016 13:38:16 +0000 (23:38 +1000)
libs/ardour/tempo.cc

index cb4ef4d57c430dd7eb81fb51d608dfdd4dac9f6d..27eae35ecd328b1da9e380b2225f45dadddeedce 100644 (file)
@@ -2226,7 +2226,6 @@ TempoMap::solve_map (Metrics& imaginary, MeterSection* section, const double& pu
                                        const double beats = ((m->bbt().bars - prev_m->bbt().bars) * prev_m->divisions_per_bar());
                                        if (beats + prev_m->beat() != m->beat()) {
                                                /* tempo/ meter change caused a change in beat (bar). */
-                                               const double floor_beats = beats - fmod (beats, prev_m->divisions_per_bar());
                                                b_bbt = make_pair (beats + prev_m->beat()
                                                                   , BBT_Time ((beats / prev_m->divisions_per_bar()) + prev_m->bbt().bars, 1, 0));
                                                new_pulse = prev_m->pulse() + (beats / prev_m->note_divisor());
@@ -2461,9 +2460,13 @@ TempoMap::gui_move_meter (MeterSection* ms, const framepos_t&  frame)
 void
 TempoMap::gui_move_meter (MeterSection* ms, const double& pulse)
 {
+       Metrics future_map;
        {
                Glib::Threads::RWLock::WriterLock lm (lock);
-               solve_map (_metrics, ms, pulse);
+               MeterSection* copy = copy_metrics_and_point (_metrics, future_map, ms);
+               if (solve_map (future_map, copy, pulse)) {
+                       solve_map (_metrics, ms, pulse);
+               }
        }
 
        MetricPositionChanged (); // Emit Signal