diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-04-29 02:14:35 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-04-29 02:14:35 +0000 |
commit | 59101983009dcae60e7d5f5ee5cb5daadf62ec60 (patch) | |
tree | 1fc0612253d6e398ab61dc71c0013fcd0697e573 /libs/ardour/session_transport.cc | |
parent | 8ed0d9e95ad82ff807ebeea582613a1c18705e35 (diff) |
catch jack shutdown (from server) and handle it better then we used to in terms of preventing things from believing that we are still connected
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5006 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/session_transport.cc')
-rw-r--r-- | libs/ardour/session_transport.cc | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index 280189241c..3d5e7a30ac 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -1016,7 +1016,7 @@ Session::reset_rf_scale (nframes_t motion) } 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; @@ -1041,7 +1041,9 @@ Session::set_slave_source (SlaveSource src) switch (src) { case None: - stop_transport (); + if (stop_the_transport) { + stop_transport (); + } break; case MTC: @@ -1233,11 +1235,16 @@ Session::engine_halted () 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 */ } |