diff --git a/libs/ardour/ardour/triggerbox.h b/libs/ardour/ardour/triggerbox.h index 6f280af1d0..98efa0598a 100644 --- a/libs/ardour/ardour/triggerbox.h +++ b/libs/ardour/ardour/triggerbox.h @@ -572,6 +572,7 @@ class LIBARDOUR_API AudioTrigger : public Trigger { samplecnt_t append (Sample const * src, samplecnt_t cnt, uint32_t chan); void alloc (samplecnt_t cnt, uint32_t nchans); + void reset () { length = 0; } }; diff --git a/libs/ardour/triggerbox.cc b/libs/ardour/triggerbox.cc index 734a99969c..59414a4572 100644 --- a/libs/ardour/triggerbox.cc +++ b/libs/ardour/triggerbox.cc @@ -728,16 +728,6 @@ Trigger::set_region (std::shared_ptr r, bool use_thread) } } -void -Trigger::clear_region () -{ - /* Called from RT process thread */ - - _region.reset (); - DEBUG_TRACE (DEBUG::Triggers, string_compose ("cleared region for %1\n", _index)); - set_name (""); -} - void Trigger::set_region_internal (std::shared_ptr r) { @@ -1728,7 +1718,8 @@ AudioTrigger::set_region_in_worker_thread_internal (std::shared_ptr r, b set_region_internal (r); if (!r) { - /* unset */ + data.reset (); + std::cerr << "T " << _box.order() << " / " << index() << " cleared, now playable ? " << playable() << " dl " << data.length() << std::endl; return 0; } @@ -4297,7 +4288,7 @@ TriggerBox::maybe_swap_pending (uint32_t slot) empty_changed = true; } } - all_triggers[slot]->clear_region (); + all_triggers[slot]->set_region (nullptr); } else { if (!all_triggers[slot]->playable()) { if (_active_slots == 0) {