From 2e38cb81fe0cb7afd492cf2d30d28f316c41b8e8 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 11 Aug 2015 20:21:44 +0200 Subject: fix deadlock at exit on SMP systems graph process-threads won't terminate properly while active. --- libs/ardour/audioengine.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'libs/ardour/audioengine.cc') diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 16283d9232..00a381fcb5 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -863,10 +863,20 @@ AudioEngine::stop (bool for_latency) return 0; } + Glib::Threads::Mutex::Lock pl (_process_lock, Glib::Threads::NOT_LOCK); + + if (running()) { + pl.acquire (); + } + if (_backend->stop ()) { return -1; } - + + if (pl.locked ()) { + pl.release (); + } + if (_session && _running && (_session->state_of_the_state() & Session::Loading) == 0 && (_session->state_of_the_state() & Session::Deletion) == 0) { -- cgit v1.2.3