<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/j2k_encoder.cc, branch gpu2</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=gpu2</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=gpu2'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2020-08-24T07:44:30Z</updated>
<entry>
<title>Add loop for gpu multithread; add some timing.</title>
<updated>2020-08-24T07:44:30Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-08-24T07:44:30Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=ec1c6875af12ce761f93dd8547a43227796715ad'/>
<id>urn:sha1:ec1c6875af12ce761f93dd8547a43227796715ad</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix up rebase and add timer.</title>
<updated>2020-08-23T20:50:34Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-08-23T20:50:28Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=180b1d27d0186526b87852709d1f70c7d2c949f4'/>
<id>urn:sha1:180b1d27d0186526b87852709d1f70c7d2c949f4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add stub GPU encode worker.</title>
<updated>2020-08-23T18:32:49Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-02-23T00:09:24Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=1d0b111ac9692dedfd4a23c268f362e522105bcf'/>
<id>urn:sha1:1d0b111ac9692dedfd4a23c268f362e522105bcf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make class hierarchy to handle different J2K encoder 'worker's.</title>
<updated>2020-08-23T18:32:01Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-02-22T23:14:26Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=90154a126c2b71b4a574ab21b366bd6c72ff6d17'/>
<id>urn:sha1:90154a126c2b71b4a574ab21b366bd6c72ff6d17</id>
<content type='text'>
</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>Various OSX warnings fixes.</title>
<updated>2020-07-26T19:30:59Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-07-26T19:29:43Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=6eba051dcbb8c56e3e2efea946ce0380d17a7b33'/>
<id>urn:sha1:6eba051dcbb8c56e3e2efea946ce0380d17a7b33</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use thread_group for improved exception safety (#1785).</title>
<updated>2020-07-23T20:53:56Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-07-23T20:53:43Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=73ebb92e9df01ba7afb97121b6e2cef6ca13a18e'/>
<id>urn:sha1:73ebb92e9df01ba7afb97121b6e2cef6ca13a18e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Try to give a better error when we fail to start J2K encoding</title>
<updated>2020-04-13T22:44:33Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-04-13T22:44:33Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=778a8b0e19715ed98969ce84cdf4859e1e0e7e52'/>
<id>urn:sha1:778a8b0e19715ed98969ce84cdf4859e1e0e7e52</id>
<content type='text'>
(probably because of a lack of addressable RAM).

See #1540.
</content>
</entry>
<entry>
<title>Can't put boost::thread in a std::list with our macOS compiler.</title>
<updated>2020-02-19T20:55:04Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-02-19T20:55:04Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=5b1b70c86df7225a2a102bdde3b38ea591a6dcbb'/>
<id>urn:sha1:5b1b70c86df7225a2a102bdde3b38ea591a6dcbb</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>
</feed>
