- if ((prop = node.property ("bitslot")) == 0) {
- bitslot = _session.next_send_id();
- } else {
- sscanf (prop->value().c_str(), "%" PRIu32, &bitslot);
- _session.mark_send_id (bitslot);
+ DEBUG_TRACE (DEBUG::LatencyCompensation,
+ string_compose ("Send::set_delay_in(%1) + %2 = %3\n",
+ delay, _delay_out, _delay_out + _delay_in));
+ _delayline.get()->set_delay(_delay_out + _delay_in);
+}
+
+void
+Send::set_delay_out(framecnt_t delay)
+{
+ if (!_delayline) return;
+ if (_delay_out == delay) {
+ return;
+ }
+ _delay_out = delay;
+ DEBUG_TRACE (DEBUG::LatencyCompensation,
+ string_compose ("Send::set_delay_out(%1) + %2 = %3\n",
+ delay, _delay_in, _delay_out + _delay_in));
+ _delayline.get()->set_delay(_delay_out + _delay_in);
+}
+
+void
+Send::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, pframes_t nframes, bool)
+{
+ if (_output->n_ports() == ChanCount::ZERO) {
+ _meter->reset ();
+ _active = _pending_active;
+ return;
+ }
+
+ if (!_active && !_pending_active) {
+ _meter->reset ();
+ _output->silence (nframes);
+ _active = _pending_active;
+ return;