summaryrefslogtreecommitdiff
path: root/libs/ardour/session_transport.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-04-29 02:14:35 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-04-29 02:14:35 +0000
commit59101983009dcae60e7d5f5ee5cb5daadf62ec60 (patch)
tree1fc0612253d6e398ab61dc71c0013fcd0697e573 /libs/ardour/session_transport.cc
parent8ed0d9e95ad82ff807ebeea582613a1c18705e35 (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.cc13
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 */
}