more inter-thread progress fixes; slight change of semantics:
authorRobin Gareus <robin@gareus.org>
Tue, 24 May 2016 01:27:27 +0000 (03:27 +0200)
committerRobin Gareus <robin@gareus.org>
Tue, 24 May 2016 01:33:08 +0000 (03:33 +0200)
commit7aa85887da16aca9d54a693bbaf6353a5b3fa99f
treeb4dc35c3730f9874e86b433f01c08387a7994002
parentcd5cd2f8f29e9b99942cbb232f622ad3ab074fc1
more inter-thread progress fixes; slight change of semantics:

Background thread now *must* set "done" as last step. (they already do
since various error conditions don't result in "done")

This fixes a race: background thread Session::write_one_track() sets "done"
to true. Editor::freeze_route () continues, sets current_interthread_info
to NULL. thread continues and tries to set current_interthread_info.done
before terminating -> Crash.

This also ensures that singleton threads created with
"pthread_create_and_store" remain unique.
libs/ardour/session.cc