From fc31513bbe5d2e4d91ca3454fbe5f5947e08c4d6 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 14 Apr 2025 10:09:17 -0600 Subject: [PATCH] fix inappropriate signal emission patterns in Triggerbox/Trigger --- libs/ardour/triggerbox.cc | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/libs/ardour/triggerbox.cc b/libs/ardour/triggerbox.cc index f88e386266..35826f1ff9 100644 --- a/libs/ardour/triggerbox.cc +++ b/libs/ardour/triggerbox.cc @@ -320,17 +320,22 @@ Trigger::_arm (Temporal::BBT_Offset const & duration) } _box.arm_from_another_thread (*this, _box.session().transport_sample(), chns, duration); - _armed = true; - ArmChanged(); /* EMIT SIGNAL */ - TriggerArmChanged (this); /* EMIT SIGNAL */ + + if (!_armed) { + _armed = true; + ArmChanged(); /* EMIT SIGNAL */ + TriggerArmChanged (this); /* EMIT SIGNAL */ + } } void Trigger::disarm () { - _armed = false; - ArmChanged(); /* EMIT SIGNAL */ - TriggerArmChanged (this); + if (_armed) { + _armed = false; + ArmChanged(); /* EMIT SIGNAL */ + TriggerArmChanged (this); + } } void @@ -2531,8 +2536,10 @@ void MIDITrigger::captured (SlotArmInfo& ai, BufferSet& bufs) { if (ai.midi_buf->size() == 0) { - _armed = false; - ArmChanged(); /* EMIT SIGNAL */ + if (_armed) { + _armed = false; + ArmChanged(); /* EMIT SIGNAL */ + } return; } @@ -3816,6 +3823,7 @@ TriggerBox::maybe_capture (BufferSet& bufs, samplepos_t start_sample, samplepos_ offset = ai->start_samples - start_sample; nframes -= offset; _record_state = Recording; + RecEnableChanged(); /* EMIT SIGNAL */ // std::cerr << "Hit start @ " << ai->start_samples << " within " << start_sample << " ... " << end_sample << " offset will be " << offset << " nf " << nframes << std::endl; }