mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-04 12:45:45 +01:00
Fix transport master crash when switching backends
Port registration happens asynchronously. During the first process callbacks the timecode/clock input ports may not have been re-established.
This commit is contained in:
parent
db0691d236
commit
7b5d61b7a5
3 changed files with 19 additions and 0 deletions
|
|
@ -525,6 +525,11 @@ LTC_TransportMaster::process_ltc(samplepos_t const now)
|
|||
void
|
||||
LTC_TransportMaster::pre_process (ARDOUR::pframes_t nframes, samplepos_t now, boost::optional<samplepos_t> session_pos)
|
||||
{
|
||||
if (!_port) {
|
||||
reset (true);
|
||||
return;
|
||||
}
|
||||
|
||||
Sample* in = (Sample*) AudioEngine::instance()->port_engine().get_buffer (_port->port_handle(), nframes);
|
||||
sampleoffset_t skip;
|
||||
|
||||
|
|
|
|||
|
|
@ -119,6 +119,14 @@ void
|
|||
MIDIClock_TransportMaster::pre_process (MIDI::pframes_t nframes, samplepos_t now, boost::optional<samplepos_t> session_pos)
|
||||
{
|
||||
/* Read and parse incoming MIDI */
|
||||
if (!_midi_port) {
|
||||
_bpm = 0.0;
|
||||
_running = false;
|
||||
_current_delta = 0;
|
||||
midi_clock_count = 0;
|
||||
DEBUG_TRACE (DEBUG::MidiClock, "No MIDI Clock port registered");
|
||||
return;
|
||||
}
|
||||
|
||||
DEBUG_TRACE (DEBUG::MidiClock, string_compose ("preprocess with lt = %1 @ %2, running ? %3\n", current.timestamp, now, _running));
|
||||
|
||||
|
|
|
|||
|
|
@ -131,6 +131,12 @@ MTC_TransportMaster::pre_process (MIDI::pframes_t nframes, samplepos_t now, boos
|
|||
|
||||
maybe_reset ();
|
||||
|
||||
if (!_midi_port) {
|
||||
_current_delta = 0;
|
||||
DEBUG_TRACE (DEBUG::MTC, "No MTC port registered");
|
||||
return;
|
||||
}
|
||||
|
||||
_midi_port->read_and_parse_entire_midi_buffer_with_no_speed_adjustment (nframes, parser, now);
|
||||
|
||||
if (session_pos) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue