when calling Session::engine_halted() after a user-driven engine stop, make sure...
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 17 Oct 2018 17:15:52 +0000 (13:15 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 17 Oct 2018 17:15:52 +0000 (13:15 -0400)
libs/ardour/audioengine.cc

index 91f58d44adfd0ee299b49df7de5338456d9821d2..ba4dc4348a7e07052b1f0094bf1f6db596d5bf07 100644 (file)
@@ -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) {