From 70c0e34c4dd272ef6d4a08938c64067c19af5d06 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 17 Oct 2018 13:15:52 -0400 Subject: [PATCH] when calling Session::engine_halted() after a user-driven engine stop, make sure Engine::running() will be false --- libs/ardour/audioengine.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 91f58d44ad..ba4dc4348a 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -968,7 +968,13 @@ AudioEngine::stop (bool for_latency) pl.release (); } - if (_session && _running && stop_engine && + const bool was_running_will_stop = (_running && stop_engine); + + if (was_running_will_stop) { + _running = false; + } + + if (_session && was_running_will_stop && (_session->state_of_the_state() & Session::Loading) == 0 && (_session->state_of_the_state() & Session::Deletion) == 0) { // it's not a halt, but should be handled the same way: @@ -976,8 +982,7 @@ AudioEngine::stop (bool for_latency) _session->engine_halted (); } - if (stop_engine && _running) { - _running = false; + if (was_running_will_stop) { if (!for_latency) { _started_for_latency = false; } else if (!_started_for_latency) {