diff options
author | nick_m <mainsbridge@gmail.com> | 2017-06-08 22:18:57 +1000 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2017-06-08 22:18:57 +1000 |
commit | 7a71428fb08eaf5bf8cbb88c18069c02f9c3ab64 (patch) | |
tree | 253f78cc89f0208cb275f3e4d7ca2d86a5cf6106 | |
parent | b57b1de49128c918a7d322be953db979ea687751 (diff) |
Fix uninitialised tempo section variable
Should fix 7390.
-rw-r--r-- | libs/ardour/ardour/tempo.h | 2 | ||||
-rw-r--r-- | libs/ardour/tempo.cc | 18 |
2 files changed, 10 insertions, 10 deletions
diff --git a/libs/ardour/ardour/tempo.h b/libs/ardour/ardour/tempo.h index fd49037307..197c8c5f8f 100644 --- a/libs/ardour/ardour/tempo.h +++ b/libs/ardour/ardour/tempo.h @@ -249,7 +249,6 @@ class LIBARDOUR_API TempoSection : public MetricSection, public Tempo { framepos_t frame_at_pulse (const double& pulse) const; Timecode::BBT_Time legacy_bbt () { return _legacy_bbt; } - bool legacy_end () { return _legacy_end; } private: @@ -283,7 +282,6 @@ class LIBARDOUR_API TempoSection : public MetricSection, public Tempo { bool _locked_to_meter; bool _clamped; Timecode::BBT_Time _legacy_bbt; - bool _legacy_end; }; typedef std::list<MetricSection*> Metrics; diff --git a/libs/ardour/tempo.cc b/libs/ardour/tempo.cc index 240be1b9e1..c04f6803fd 100644 --- a/libs/ardour/tempo.cc +++ b/libs/ardour/tempo.cc @@ -158,7 +158,6 @@ TempoSection::TempoSection (const XMLNode& node, framecnt_t sample_rate) , _active (true) , _locked_to_meter (false) , _clamped (false) - , _legacy_end (false) { LocaleGuard lg; @@ -201,19 +200,22 @@ TempoSection::TempoSection (const XMLNode& node, framecnt_t sample_rate) if (node.get_property ("end-beats-per-minute", _end_note_types_per_minute)) { if (_end_note_types_per_minute < 0.0) { - info << _("TempoSection XML node has an illegal \"in-beats-per-minute\" value") << endmsg; - //throw failed_constructor(); - _end_note_types_per_minute = _note_types_per_minute; - _legacy_end = true; + info << _("TempoSection XML node has an illegal \"end-beats-per-minute\" value") << endmsg; + throw failed_constructor(); } - } else { - _legacy_end = true; } TempoSection::Type old_type; if (!node.get_property ("tempo-type", old_type)) { + /* sessions with a tempo-type node contain no end-beats-per-minute. + if the legacy node indicates a constant tempo, simply fill this in with the + start tempo. otherwise we need the next neighbour to know what it will be. + */ + if (old_type == TempoSection::Constant) { _end_note_types_per_minute = _note_types_per_minute; + } else { + _end_note_types_per_minute = -1.0; } } @@ -4649,7 +4651,7 @@ TempoMap::set_state (const XMLNode& node, int /*version*/) break; } - if (t->legacy_end()) { + if (t->end_note_types_per_minute() < 0.0) { fix_legacy_end_session(); break; } |