Tempo ramps - use consistent naming for _locked methods, use enum_2_string for TempoS...
authornick_m <mainsbridge@gmail.com>
Sat, 20 Feb 2016 18:26:16 +0000 (05:26 +1100)
committernick_m <mainsbridge@gmail.com>
Fri, 27 May 2016 13:38:10 +0000 (23:38 +1000)
libs/ardour/ardour/tempo.h
libs/ardour/enums.cc
libs/ardour/tempo.cc

index 8712578e54f5bc25503396faaab334c055504916..bc52c489024bab747964fb5538a418e6bcdbbdb3 100644 (file)
@@ -403,8 +403,8 @@ class LIBARDOUR_API TempoMap : public PBD::StatefulDestructible
        Timecode::BBT_Time beats_to_bbt (double beats);
 
 private:
-       double bbt_to_beats_unlocked (Timecode::BBT_Time bbt);
-       Timecode::BBT_Time beats_to_bbt_unlocked (double beats);
+       double bbt_to_beats_locked (Timecode::BBT_Time bbt);
+       Timecode::BBT_Time beats_to_bbt_locked (double beats);
 
        friend class ::BBTTest;
        friend class ::FrameposPlusBeatsTest;
index fa83780727afc4631f88826ab7aca59858346257..b7e77952cb2926e46db3fc4338214856f2362bd3 100644 (file)
@@ -34,6 +34,7 @@
 #include "ardour/mute_master.h"
 #include "ardour/session.h"
 #include "ardour/source.h"
+#include "ardour/tempo.h"
 #include "ardour/track.h"
 #include "ardour/types.h"
 
@@ -103,6 +104,7 @@ setup_enum_writer ()
        Diskstream::Flag _Diskstream_Flag;
        Location::Flags _Location_Flags;
        PositionLockStyle _PositionLockStyle;
+       TempoSection::Type _TempoSection_Type;
        Track::FreezeState _Track_FreezeState;
        AutomationList::InterpolationStyle _AutomationList_InterpolationStyle;
        AnyTime::Type _AnyTime_Type;
@@ -528,6 +530,10 @@ setup_enum_writer ()
        REGISTER_CLASS_ENUM (Location, IsSkip);
        REGISTER_BITS (_Location_Flags);
 
+       REGISTER_CLASS_ENUM (TempoSection, Ramp);
+       REGISTER_CLASS_ENUM (TempoSection, Constant);
+       REGISTER (_TempoSection_Type);
+
        REGISTER_CLASS_ENUM (Track, NoFreeze);
        REGISTER_CLASS_ENUM (Track, Frozen);
        REGISTER_CLASS_ENUM (Track, UnFrozen);
index 430e52d77a742139a0d71d4e717a3dc84f015fd5..08a70c4574f9a3f699f63d742047c07aba15fe55 100644 (file)
 #include <unistd.h>
 
 #include <glibmm/threads.h>
+
+#include "pbd/enumwriter.h"
 #include "pbd/xml++.h"
 #include "evoral/Beats.hpp"
+
 #include "ardour/debug.h"
 #include "ardour/lmath.h"
 #include "ardour/tempo.h"
@@ -89,7 +92,7 @@ TempoSection::TempoSection (const XMLNode& node)
                        set_beat (beat);
                }
        } else {
-               error << _("TempoSection XML node has no \"start\" property") << endmsg;
+               warning << _("TempoSection XML node has no \"start\" property") << endmsg;
        }
 
 
@@ -143,11 +146,7 @@ TempoSection::TempoSection (const XMLNode& node)
        if ((prop = node.property ("tempo-type")) == 0) {
                _type = Constant;
        } else {
-               if (strstr(prop->value().c_str(),"Constant")) {
-                       _type = Constant;
-               } else {
-                       _type = Ramp;
-               }
+               _type = Type (string_2_enum (prop->value(), _type));
        }
 }
 
@@ -168,9 +167,7 @@ TempoSection::get_state() const
        // root->add_property ("bar-offset", buf);
        snprintf (buf, sizeof (buf), "%s", movable()?"yes":"no");
        root->add_property ("movable", buf);
-
-       snprintf (buf, sizeof (buf), "%s", _type == Constant?"Constant":"Ramp");
-       root->add_property ("tempo-type", buf);
+       root->add_property ("tempo-type", enum_2_string (_type));
 
        return *root;
 }
@@ -601,7 +598,7 @@ TempoMap::do_insert (MetricSection* section)
                        pair<double, BBT_Time> corrected = make_pair (m->beat(), m->bbt());
                        corrected.second.beats = 1;
                        corrected.second.ticks = 0;
-                       corrected.first = bbt_to_beats_unlocked (corrected.second);
+                       corrected.first = bbt_to_beats_locked (corrected.second);
                        warning << string_compose (_("Meter changes can only be positioned on the first beat of a bar. Moving from %1 to %2"),
                                                   m->bbt(), corrected.second) << endmsg;
                        m->set_beat (corrected);
@@ -838,7 +835,7 @@ TempoMap::replace_meter (const MeterSection& ms, const Meter& meter, const BBT_T
                MeterSection& first (first_meter());
                if (ms.beat() != first.beat()) {
                        remove_meter_locked (ms);
-                       add_meter_locked (meter, bbt_to_beats_unlocked (where), where, true);
+                       add_meter_locked (meter, bbt_to_beats_locked (where), where, true);
                } else {
                        /* cannot move the first meter section */
                        *static_cast<Meter*>(&first) = meter;
@@ -1173,18 +1170,18 @@ TempoMap::bbt_time (framepos_t frame, BBT_Time& bbt)
                warning << string_compose (_("tempo map asked for BBT time at frame %1\n"), frame) << endmsg;
                return;
        }
-       bbt = beats_to_bbt_unlocked (beat_at_frame (frame));
+       bbt = beats_to_bbt_locked (beat_at_frame (frame));
 }
 
 double
 TempoMap::bbt_to_beats (Timecode::BBT_Time bbt)
 {
        Glib::Threads::RWLock::ReaderLock lm (lock);
-       return bbt_to_beats_unlocked (bbt);
+       return bbt_to_beats_locked (bbt);
 }
 
 double
-TempoMap::bbt_to_beats_unlocked (Timecode::BBT_Time bbt)
+TempoMap::bbt_to_beats_locked (Timecode::BBT_Time bbt)
 {
        /* CALLER HOLDS READ LOCK */
 
@@ -1222,11 +1219,11 @@ Timecode::BBT_Time
 TempoMap::beats_to_bbt (double beats)
 {
        Glib::Threads::RWLock::ReaderLock lm (lock);
-       return beats_to_bbt_unlocked (beats);
+       return beats_to_bbt_locked (beats);
 }
 
 Timecode::BBT_Time
-TempoMap::beats_to_bbt_unlocked (double beats)
+TempoMap::beats_to_bbt_locked (double beats)
 {
        /* CALLER HOLDS READ LOCK */
 
@@ -1393,7 +1390,7 @@ TempoMap::frame_time (const BBT_Time& bbt)
        }
        Glib::Threads::RWLock::ReaderLock lm (lock);
 
-       framepos_t const ret = frame_at_beat (bbt_to_beats_unlocked (bbt));
+       framepos_t const ret = frame_at_beat (bbt_to_beats_locked (bbt));
 
        return ret;
 }
@@ -1552,7 +1549,7 @@ TempoMap::round_to_type (framepos_t frame, RoundMode dir, BBTPointType type)
 
        double const beat_at_framepos = beat_at_frame (frame);
 
-       BBT_Time bbt (beats_to_bbt_unlocked (beat_at_framepos));
+       BBT_Time bbt (beats_to_bbt_locked (beat_at_framepos));
 
        switch (type) {
        case Bar:
@@ -1612,7 +1609,7 @@ TempoMap::get_grid (vector<TempoMap::BBTPoint>& points,
                framecnt_t const pos = frame_at_beat (cnt);
                MeterSection const meter = meter_section_at (pos);
                Tempo const tempo = tempo_at (pos);
-               BBT_Time const bbt = beats_to_bbt_unlocked ((double) cnt);
+               BBT_Time const bbt = beats_to_bbt_locked ((double) cnt);
 
                points.push_back (BBTPoint (meter, tempo, pos, bbt.bars, bbt.beats));
                ++cnt;
@@ -1975,7 +1972,7 @@ TempoMap::insert_time (framepos_t where, framecnt_t amount)
                                                ms->set_beat (start);
                                        }
                                        if ((t = dynamic_cast<TempoSection*>(prev)) != 0) {
-                                               pair<double, BBT_Time> start = make_pair (t->beat(), beats_to_bbt_unlocked (t->beat()));
+                                               pair<double, BBT_Time> start = make_pair (t->beat(), beats_to_bbt_locked (t->beat()));
                                                ms->set_beat (start);
                                        }
                                        ms->set_frame (prev->frame());