summaryrefslogtreecommitdiff
path: root/libs/ardour/session_transport.cc
diff options
context:
space:
mode:
authorGZharun <grygoriiz@wavesglobal.com>2015-02-25 03:02:28 +0200
committerPaul Davis <paul@linuxaudiosystems.com>2015-06-29 14:18:12 -0400
commit87f1c66ba1d33903662d44dabed032272827e7fd (patch)
tree498cb40120f85b3603408a687ee45e2a664a624e /libs/ardour/session_transport.cc
parent7ef5aea50037b9a8e53b796fa112a3d516ddacb1 (diff)
[Summary] Fixed race condition: "should_do_transport_work" must not be dropped to 0 outside, it's illegal. It may cause "should_do_transport_work" go below 0 and make butler to round for a very-very long time (hang and possible lock of other threads) before stop() call returns.
_butler->stop () is synchronous, so its safe to wait in this call for butler to finish it's work. [Reviewed by] PDavis
Diffstat (limited to 'libs/ardour/session_transport.cc')
-rw-r--r--libs/ardour/session_transport.cc2
1 files changed, 0 insertions, 2 deletions
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index d5adbc5b45..4e93565f11 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -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 ();
}