diff options
author | Robin Gareus <robin@gareus.org> | 2014-06-30 04:04:35 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-06-30 04:04:35 +0200 |
commit | 8b216111da5a2c59b78d9b797dcb0019fd0034f1 (patch) | |
tree | 9ba3803ccb56b5cdbdaff90885d875d32091267e /libs/ardour/session.cc | |
parent | 038d292c3fb53718f1a580a0f0ff54c7a0aa8e23 (diff) |
clean up after monitoring-section on session close
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r-- | libs/ardour/session.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index eba11a457b..36c43f0c06 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -500,6 +500,14 @@ Session::destroy () clear_clicks (); + /* need to remove auditioner before monitoring section + * otherwise it is re-connected */ + auditioner.reset (); + + /* drop references to routes held by the monitoring section + * specifically _monitor_out aux/listen references */ + remove_monitor_section(); + /* clear out any pending dead wood from RCU managed objects */ routes.flush (); @@ -519,7 +527,6 @@ Session::destroy () /* reset these three references to special routes before we do the usual route delete thing */ - auditioner.reset (); _master_out.reset (); _monitor_out.reset (); @@ -3757,6 +3764,9 @@ Session::audition_region (boost::shared_ptr<Region> r) void Session::cancel_audition () { + if (!auditioner) { + return; + } if (auditioner->auditioning()) { auditioner->cancel_audition (); AuditionActive (false); /* EMIT SIGNAL */ |