summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-08-28 15:45:52 +0200
committerRobin Gareus <robin@gareus.org>2015-08-28 15:45:52 +0200
commitb0147a7767d7b2fde9dd8357515b8bc8018b5c65 (patch)
tree458eb4586011b9e22acb76ae8676de59d71d6393 /libs
parentb6f51b2497bcb78f3ba335995386910fc0bad1f0 (diff)
fix possible deadlock on session-close
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/route.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index ce5570057b..55e1be2662 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -3101,14 +3101,21 @@ Route::remove_aux_or_listen (boost::shared_ptr<Route> route)
if (d && d->target_route() == route) {
rl.release ();
- remove_processor (*x, &err, false);
+ if (remove_processor (*x, &err, false) > 0) {
+ rl.acquire ();
+ continue;
+ }
rl.acquire ();
/* list could have been demolished while we dropped the lock
so start over.
*/
-
- goto again;
+ if (_session.engine().connected()) {
+ /* i/o processors cannot be removed if the engine is not running
+ * so don't live-loop in case the engine is N/A or dies
+ */
+ goto again;
+ }
}
}
}