diff options
author | GZharun <grygoriiz@wavesglobal.com> | 2015-02-25 03:02:28 +0200 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-06-29 14:18:12 -0400 |
commit | 87f1c66ba1d33903662d44dabed032272827e7fd (patch) | |
tree | 498cb40120f85b3603408a687ee45e2a664a624e /libs/ardour/session_transport.cc | |
parent | 7ef5aea50037b9a8e53b796fa112a3d516ddacb1 (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.cc | 2 |
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 (); } |