<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/wx/gl_video_view.cc, branch encode-servers</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=encode-servers</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=encode-servers'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2020-11-16T00:40:36Z</updated>
<entry>
<title>Make sure we use limited ("video") range data when exporting.</title>
<updated>2020-11-16T00:40:36Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-15T19:47:42Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=b057363e69b77119137c0c8b07402828096e03aa'/>
<id>urn:sha1:b057363e69b77119137c0c8b07402828096e03aa</id>
<content type='text'>
Our export formats all currently use limited range but we weren't
making sure data fed to the encoders was limited range.

Should fix #1832.
</content>
</entry>
<entry>
<title>Fix video waveform view with GL backend.</title>
<updated>2020-11-05T21:56:23Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-05T21:12:27Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=d1addc203597a892c02bd162585c6a55950ffaf5'/>
<id>urn:sha1:d1addc203597a892c02bd162585c6a55950ffaf5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix crash on Linux (and maybe others).</title>
<updated>2020-11-03T23:15:30Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-03T23:15:30Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=cfba7e0f9f20e68397e41d8f979e7723425ec51b'/>
<id>urn:sha1:cfba7e0f9f20e68397e41d8f979e7723425ec51b</id>
<content type='text'>
Calling _canvas-&gt;SetCurrent() without the canvas being on screen
causes a crash on Linux (and maybe elsewhere).
</content>
</entry>
<entry>
<title>macOS / new boost build fixes.</title>
<updated>2020-10-21T20:22:18Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-10-21T07:23:12Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=1a7c50245309bb0b99001940b2203a267de942ca'/>
<id>urn:sha1:1a7c50245309bb0b99001940b2203a267de942ca</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixes for building with newer wxWidgets.</title>
<updated>2020-09-11T15:35:10Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-09-04T16:15:23Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=2e6f03cbb2c5664bd338ad28bfd6c54732e64b47'/>
<id>urn:sha1:2e6f03cbb2c5664bd338ad28bfd6c54732e64b47</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wxEVT_CREATE appears never to arrive on Windows, so change things</title>
<updated>2020-08-08T22:03:11Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-08-08T22:03:11Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=09778ab5747c081acb51190bafdfeba63e3ea7fd'/>
<id>urn:sha1:09778ab5747c081acb51190bafdfeba63e3ea7fd</id>
<content type='text'>
to create the OpenGL thread on the first paint request.
</content>
</entry>
<entry>
<title>Remove old comment.</title>
<updated>2020-08-08T22:02:57Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-08-08T22:02:57Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=b0f642ee90a2babed6547ea68e987751621fe3f3'/>
<id>urn:sha1:b0f642ee90a2babed6547ea68e987751621fe3f3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Don't call OpenGL functions until the wxGLContext has been created.</title>
<updated>2020-08-08T22:02:25Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-08-08T22:02:25Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=85739dd3fcdf8a7d39089feb0035e841341dd44d'/>
<id>urn:sha1:85739dd3fcdf8a7d39089feb0035e841341dd44d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add some more OpenGL debugging.</title>
<updated>2020-08-04T22:06:35Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-08-04T22:06:35Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=f6ad8f0a2acae27196640a999440ed22abf5345b'/>
<id>urn:sha1:f6ad8f0a2acae27196640a999440ed22abf5345b</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>
</feed>
