From a2c0183cbcde41a23ec86e6adac89eb2608ee3f1 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 11 Aug 2025 15:41:18 -0600 Subject: [PATCH] temporal: fix up some logic relating to scoped tempo maps (GUI) --- gtk2_ardour/audio_clip_editor.cc | 4 ++-- gtk2_ardour/cue_editor.cc | 26 ++++++++++++++++++-------- gtk2_ardour/pianoroll.cc | 2 +- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/gtk2_ardour/audio_clip_editor.cc b/gtk2_ardour/audio_clip_editor.cc index e6913305ca..81546ad4e6 100644 --- a/gtk2_ardour/audio_clip_editor.cc +++ b/gtk2_ardour/audio_clip_editor.cc @@ -402,7 +402,7 @@ AudioClipEditor::drop_waves () void AudioClipEditor::set_trigger (TriggerReference& tr) { - EC_LOCAL_TEMPO_SCOPE; + /* NO LOCAL TEMPO SCOPE */ if (tr == ref) { return; @@ -418,7 +418,7 @@ AudioClipEditor::set_trigger (TriggerReference& tr) void AudioClipEditor::set_region (std::shared_ptr region) { - EC_LOCAL_TEMPO_SCOPE; + /* NO LOCAL TEMPO SCOPE */ CueEditor::set_region (region); diff --git a/gtk2_ardour/cue_editor.cc b/gtk2_ardour/cue_editor.cc index e4a92d3e13..5210e67036 100644 --- a/gtk2_ardour/cue_editor.cc +++ b/gtk2_ardour/cue_editor.cc @@ -1158,6 +1158,8 @@ CueEditor::set_track (std::shared_ptr t) void CueEditor::set_region (std::shared_ptr r) { + /* NO LOCAL TEMPO SCOPE HERE */ + if (r == _region) { return; } @@ -1166,13 +1168,17 @@ CueEditor::set_region (std::shared_ptr r) _region = r; - std::shared_ptr tmap = _region->tempo_map(); - if (tmap) { - start_local_tempo_map (tmap); - } + if (_region) { + std::shared_ptr tmap = _region->tempo_map(); + if (tmap) { + start_local_tempo_map (tmap); + } - if (!get_canvas()->is_visible()) { - _visible_pending_region = r; + if (!get_canvas()->is_visible()) { + _visible_pending_region = r; + } else { + _visible_pending_region.reset (); + } } else { _visible_pending_region.reset (); } @@ -1212,7 +1218,7 @@ CueEditor::set_from_rsu (RegionUISettings& rsu) void CueEditor::set_trigger (TriggerReference& tref) { - EC_LOCAL_TEMPO_SCOPE; + /* NO TEMPO SCOPE */ if (tref == ref) { return; @@ -1399,7 +1405,11 @@ CueEditor::idle_data_captured () void CueEditor::unset (bool trigger_too) { - end_local_tempo_map (); + /* NO LOCAL TEMPO SCOPE HERE */ + + if (_local_tempo_map) { + end_local_tempo_map (); + } _history.clear (); history_connection.disconnect(); _update_connection.disconnect(); diff --git a/gtk2_ardour/pianoroll.cc b/gtk2_ardour/pianoroll.cc index 7d395bee1b..b09cbbc989 100644 --- a/gtk2_ardour/pianoroll.cc +++ b/gtk2_ardour/pianoroll.cc @@ -1378,7 +1378,7 @@ Pianoroll::region_prop_change (PBD::PropertyChange const & what_changed) void Pianoroll::set_trigger (TriggerReference & tref) { - EC_LOCAL_TEMPO_SCOPE; + /* NO LOCAL TEMPO SCOPE */ if (ref == tref) { return;