summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-06-30 04:04:35 +0200
committerRobin Gareus <robin@gareus.org>2014-06-30 04:04:35 +0200
commit8b216111da5a2c59b78d9b797dcb0019fd0034f1 (patch)
tree9ba3803ccb56b5cdbdaff90885d875d32091267e /libs/ardour/session.cc
parent038d292c3fb53718f1a580a0f0ff54c7a0aa8e23 (diff)
clean up after monitoring-section on session close
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r--libs/ardour/session.cc12
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 */