mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-09 23:25:43 +01:00
Fix LTC encoder removal
Fixed a crash if an x-run or graph-reorder happens after the LTC encoder has been destroyed (possible at session-close or after disabling the encoder). This also fixes duplicate callbacks in case the encoder was re-enabled times in an active session.
This commit is contained in:
parent
79dc3882ea
commit
9694986a85
2 changed files with 6 additions and 2 deletions
|
|
@ -1677,6 +1677,8 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
|
|||
void ltc_tx_recalculate_position();
|
||||
void ltc_tx_parse_offset();
|
||||
void ltc_tx_send_time_code_for_cycle (framepos_t, framepos_t, double, double, pframes_t nframes);
|
||||
PBD::ScopedConnectionList ltc_tx_connections;
|
||||
|
||||
|
||||
void reset_record_status ();
|
||||
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@ Session::ltc_tx_initialize()
|
|||
ltc_prev_cycle = -1;
|
||||
ltc_tx_reset();
|
||||
ltc_tx_resync_latency();
|
||||
Xrun.connect_same_thread (*this, boost::bind (&Session::ltc_tx_reset, this));
|
||||
engine().GraphReordered.connect_same_thread (*this, boost::bind (&Session::ltc_tx_resync_latency, this));
|
||||
Xrun.connect_same_thread (ltc_tx_connections, boost::bind (&Session::ltc_tx_reset, this));
|
||||
engine().GraphReordered.connect_same_thread (ltc_tx_connections, boost::bind (&Session::ltc_tx_resync_latency, this));
|
||||
restarting = false;
|
||||
}
|
||||
|
||||
|
|
@ -97,6 +97,7 @@ Session::ltc_tx_cleanup()
|
|||
ltc_enc_buf = NULL;
|
||||
ltc_encoder_free(ltc_encoder);
|
||||
ltc_encoder = NULL;
|
||||
ltc_tx_connections.drop_connections ();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -115,6 +116,7 @@ void
|
|||
Session::ltc_tx_reset()
|
||||
{
|
||||
DEBUG_TRACE (DEBUG::LTC, "LTC TX reset\n");
|
||||
assert (ltc_encoder);
|
||||
ltc_enc_pos = -9999; // force re-start
|
||||
ltc_buf_len = 0;
|
||||
ltc_buf_off = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue