[Summary] Fixed race condition: "should_do_transport_work" must not be dropped to...
[ardour.git] / libs / ardour / session_transport.cc
index b392dabcbf536280c842a7f70b76ba923351d54c..4e93565f1159f11530f1126316a0c9d6ed9f2b97 100644 (file)
@@ -1789,8 +1789,6 @@ Session::engine_halted ()
        */
 
        if (_butler) {
-               g_atomic_int_set (&_butler->should_do_transport_work, 0);
-               set_post_transport_work (PostTransportWork (0));
                _butler->stop ();
        }
 
@@ -1806,6 +1804,8 @@ Session::engine_halted ()
 void
 Session::xrun_recovery ()
 {
+       ++_xrun_count;
+
        Xrun (_transport_frame); /* EMIT SIGNAL */
 
        if (Config->get_stop_recording_on_xrun() && actively_recording()) {
@@ -1826,6 +1826,12 @@ Session::route_processors_changed (RouteProcessorChange c)
        }
 
        if (c.type == RouteProcessorChange::MeterPointChange) {
+               set_dirty ();
+               return;
+       }
+
+       if (c.type == RouteProcessorChange::RealTimeChange) {
+               set_dirty ();
                return;
        }