diff options
author | Robin Gareus <robin@gareus.org> | 2015-10-15 13:49:35 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-10-15 13:50:19 +0200 |
commit | 159d23be9f1aa9e389b2bca8aec1bb673e2e2549 (patch) | |
tree | 4e1f6e98b151f3605ae607935d2955777d96085e /libs/ardour/session.cc | |
parent | 696b89b71a895dff732c734cdaa30a2e119292c8 (diff) |
fix deadlock when removing subgroup bus w/sends.
...and potentially other route removals that involve
processor changes.
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r-- | libs/ardour/session.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 479b433f29..1231212d2e 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -2064,6 +2064,10 @@ Session::resort_routes () return; } + if (_route_deletion_in_progress) { + return; + } + { RCUWriter<RouteList> writer (routes); boost::shared_ptr<RouteList> r = writer.get_copy (); @@ -3363,9 +3367,8 @@ Session::add_internal_send (boost::shared_ptr<Route> dest, boost::shared_ptr<Pro void Session::remove_routes (boost::shared_ptr<RouteList> routes_to_remove) { - PBD::Unwinder<bool> uw_flag (_route_deletion_in_progress, true); - { // RCU Writer scope + PBD::Unwinder<bool> uw_flag (_route_deletion_in_progress, true); RCUWriter<RouteList> writer (routes); boost::shared_ptr<RouteList> rs = writer.get_copy (); |