Fix TSC signal emission (monitoring and automation)
TransportStateChange() triggers various updates. However at the time the signal is handled `transport_rolling()` and/or `transport_state_rolling()` may still return false. This fixes incorrect In/Disk display on tracks (RouteUI) and incorrect automation write-pass handling, when toggling stop/play.
This commit is contained in:
parent
e9ed448994
commit
a6ef7df1fd
@ -321,6 +321,7 @@ Session::default_play_speed ()
|
|||||||
void
|
void
|
||||||
Session::set_default_play_speed (double spd)
|
Session::set_default_play_speed (double spd)
|
||||||
{
|
{
|
||||||
|
ENSURE_PROCESS_THREAD;
|
||||||
/* see also Port::set_speed_ratio and
|
/* see also Port::set_speed_ratio and
|
||||||
* VMResampler::set_rratio() for min/max range.
|
* VMResampler::set_rratio() for min/max range.
|
||||||
* speed must be > +/- 100 / 16 %
|
* speed must be > +/- 100 / 16 %
|
||||||
@ -568,7 +569,17 @@ Session::start_transport ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
DEBUG_TRACE (DEBUG::Transport, string_compose ("send TSC4 with speed = %1\n", transport_speed()));
|
DEBUG_TRACE (DEBUG::Transport, string_compose ("send TSC4 with speed = %1\n", transport_speed()));
|
||||||
TransportStateChange (); /* EMIT SIGNAL */
|
|
||||||
|
/* emit TransportStateChange signal only when transport is actually rolling */
|
||||||
|
SessionEvent* ev = new SessionEvent (SessionEvent::TransportStateChange, SessionEvent::Add, _transport_sample, _transport_sample, 1.0);
|
||||||
|
queue_event (ev);
|
||||||
|
|
||||||
|
samplepos_t roll_pos = _transport_sample + std::max (_count_in_samples, _remaining_latency_preroll) * (_transport_fsm->will_roll_fowards () ? 1 : -1);
|
||||||
|
if (roll_pos > 0 && roll_pos != _transport_sample) {
|
||||||
|
/* and when transport_rolling () == true */
|
||||||
|
SessionEvent* ev = new SessionEvent (SessionEvent::TransportStateChange, SessionEvent::Add, roll_pos, roll_pos, 1.0);
|
||||||
|
queue_event (ev);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
Loading…
Reference in New Issue
Block a user