<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/butler.cc, branch benchmark</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=benchmark</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=benchmark'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2020-09-01T14:34:26Z</updated>
<entry>
<title>Build fixes for Boost &gt;= 1.73</title>
<updated>2020-09-01T14:34:26Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-08-27T20:37:32Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=c04fec82d25127fafa73c3daff87bece9aa8c8e8'/>
<id>urn:sha1:c04fec82d25127fafa73c3daff87bece9aa8c8e8</id>
<content type='text'>
Forward-ported-from: d1e9749ca290673639a49d693a8fe5c6557cc2de
</content>
</entry>
<entry>
<title>Report better errors when the butler dies.</title>
<updated>2020-08-17T13:44:58Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-08-17T13:44:58Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=6abf2fdd53b14608561fcc1900507daea5b79fb7'/>
<id>urn:sha1:6abf2fdd53b14608561fcc1900507daea5b79fb7</id>
<content type='text'>
Adapted from d23f55d8cd73adda823d0a2fcabc129b8845a81 in master.
</content>
</entry>
<entry>
<title>Fix bugs in thread termination causing occasional pthread</title>
<updated>2020-07-29T18:22:54Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-07-29T18:22:54Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=e3c7656f9dc0acbaf518c051b847ee2e4eb7ba23'/>
<id>urn:sha1:e3c7656f9dc0acbaf518c051b847ee2e4eb7ba23</id>
<content type='text'>
assertion failures.

Before this, it was possible for J2KEncoder::terminate_threads()
to finish without terminating all threads if the thread _running_
terminate_threads() was itself interrupt()ed.

This is because the thread_group::join_all() in terminate_threads()
is an interruption point, so it was possible it not to complete
but instead to throw interrupted_exception.  Then the owning
J2KEncoder would be torn down but the threads would still be running,
causing use-after-frees.

This commit adds some boost::this_thread::disable_interruption
objects to ensure that the owning thread is not interrupted while
it is being destroyed.

Also tidy up code that does this stuff, assuming that it's safe
to not call thread::joinable but instead do

thread.interrupt();
try {
  thread.join();
} catch (...) {}
</content>
</entry>
<entry>
<title>Improve butler error reporting during export.</title>
<updated>2020-07-05T20:10:03Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-07-05T20:10:03Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=cfa822570e6f2d2d09fe1c36a81b224ded07c6b6'/>
<id>urn:sha1:cfa822570e6f2d2d09fe1c36a81b224ded07c6b6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Various thread cleanups.</title>
<updated>2020-01-30T21:54:38Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-01-30T21:54:38Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=ea6b2dae46caa1da829fbf499e83cd6ae3b3773a'/>
<id>urn:sha1:ea6b2dae46caa1da829fbf499e83cd6ae3b3773a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove dubious _buffers_mutex and maintain a lock on _mutex for</title>
<updated>2019-11-05T20:09:37Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-11-05T20:09:37Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=e97d48b043fe39ec22687555225d6b4b526a2172'/>
<id>urn:sha1:e97d48b043fe39ec22687555225d6b4b526a2172</id>
<content type='text'>
the whole of ::audio.  Otherwise changes to pending seeks can be
mixed up with audio being put into the ringbuffer.
</content>
</entry>
<entry>
<title>Optimise the feel of some GUI functions by doing the seek after</title>
<updated>2019-07-24T19:42:50Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-07-24T19:42:50Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=335ef709439cd3678f6813a3fb880110e4c9cb26'/>
<id>urn:sha1:335ef709439cd3678f6813a3fb880110e4c9cb26</id>
<content type='text'>
many content changes in an idle handler, rather than blocking
the UI update until the seek and image redisplay have finished.
</content>
</entry>
<entry>
<title>Player::playlist_content_change will call setup_pieces() regardless</title>
<updated>2019-05-15T22:52:15Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-05-15T22:52:15Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=c68cf49367957b49a99a9cc04013e9ee5a8c5bfc'/>
<id>urn:sha1:c68cf49367957b49a99a9cc04013e9ee5a8c5bfc</id>
<content type='text'>
of the state of frequent, so Butler::player_change must always seek
regardless of the state of frequent.  Otherwise setup_pieces() results
in the next pass() output being at position 0, which causes problems
when the audio from that output is pushed into the audio ring buffers.
</content>
</entry>
<entry>
<title>Put Time types in dcpomatic namespace.</title>
<updated>2019-05-10T22:43:55Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-05-08T22:41:42Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=c4403784febdbdd42e9c32e67fadb147f11fe566'/>
<id>urn:sha1:c4403784febdbdd42e9c32e67fadb147f11fe566</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Comment tweaks.</title>
<updated>2019-04-19T23:29:49Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-04-19T23:29:49Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=75ef09f7ca0838357b55399916719655905e218a'/>
<id>urn:sha1:75ef09f7ca0838357b55399916719655905e218a</id>
<content type='text'>
</content>
</entry>
</feed>
