fix deadlock when removing routes and using JACK1.
graph reorder callback needed an early exit if we were deleting routes, is all.
This commit is contained in:
parent
a86aa9e5bc
commit
cb85080ca8
@ -3346,6 +3346,8 @@ Session::add_internal_send (boost::shared_ptr<Route> dest, boost::shared_ptr<Pro
|
|||||||
void
|
void
|
||||||
Session::remove_routes (boost::shared_ptr<RouteList> routes_to_remove)
|
Session::remove_routes (boost::shared_ptr<RouteList> routes_to_remove)
|
||||||
{
|
{
|
||||||
|
PBD::Unwinder<bool> uw_flag (_route_deletion_in_progress, true);
|
||||||
|
|
||||||
{ // RCU Writer scope
|
{ // RCU Writer scope
|
||||||
RCUWriter<RouteList> writer (routes);
|
RCUWriter<RouteList> writer (routes);
|
||||||
boost::shared_ptr<RouteList> rs = writer.get_copy ();
|
boost::shared_ptr<RouteList> rs = writer.get_copy ();
|
||||||
@ -3441,7 +3443,6 @@ Session::remove_routes (boost::shared_ptr<RouteList> routes_to_remove)
|
|||||||
/* try to cause everyone to drop their references
|
/* try to cause everyone to drop their references
|
||||||
* and unregister ports from the backend
|
* and unregister ports from the backend
|
||||||
*/
|
*/
|
||||||
PBD::Unwinder<bool> uw_flag (_route_deletion_in_progress, true);
|
|
||||||
|
|
||||||
for (RouteList::iterator iter = routes_to_remove->begin(); iter != routes_to_remove->end(); ++iter) {
|
for (RouteList::iterator iter = routes_to_remove->begin(); iter != routes_to_remove->end(); ++iter) {
|
||||||
(*iter)->drop_references ();
|
(*iter)->drop_references ();
|
||||||
@ -4878,7 +4879,7 @@ Session::graph_reordered ()
|
|||||||
from a set_state() call or creating new tracks. Ditto for deletion.
|
from a set_state() call or creating new tracks. Ditto for deletion.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ((_state_of_the_state & (InitialConnecting|Deletion)) || _adding_routes_in_progress || _reconnecting_routes_in_progress) {
|
if ((_state_of_the_state & (InitialConnecting|Deletion)) || _adding_routes_in_progress || _reconnecting_routes_in_progress || _route_deletion_in_progress) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user