void reset_slave_state ();
bool follow_slave (nframes_t);
- void set_slave_source (SlaveSource);
+ void set_slave_source (SlaveSource, bool stop_transport = true);
bool _exporting;
int prepare_to_export (ARDOUR::AudioExportSpecification&);
ae->_running = false;
ae->_buffer_size = 0;
ae->_frame_rate = 0;
+ ae->_jack = 0;
if (was_running) {
ae->Halted(); /* EMIT SIGNAL */
AudioEngine::get_port_total_latency (const Port& port)
{
if (!_jack) {
- fatal << _("get_port_total_latency() called with no JACK client connection") << endmsg;
- /*NOTREACHED*/
+ return 0;
}
return jack_port_get_total_latency (_jack, port._port);
}
void
-Session::set_slave_source (SlaveSource src)
+Session::set_slave_source (SlaveSource src, bool stop_the_transport)
{
bool reverse = false;
bool non_rt_required = false;
switch (src) {
case None:
- stop_transport ();
+ if (stop_the_transport) {
+ stop_transport ();
+ }
break;
case MTC:
g_atomic_int_set (&butler_should_do_transport_work, 0);
post_transport_work = PostTransportWork (0);
stop_butler ();
-
+
realtime_stop (false);
non_realtime_stop (false, 0, ignored);
transport_sub_state = 0;
+ if (synced_to_jack()) {
+ /* transport is already stopped, hence the second argument */
+ set_slave_source (None, false);
+ }
+
TransportStateChange (); /* EMIT SIGNAL */
}