<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib, branch boost-exception-test</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=boost-exception-test</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=boost-exception-test'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2020-02-04T23:28:16Z</updated>
<entry>
<title>Missing lib in wscript.</title>
<updated>2020-02-04T23:28:16Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-02-04T23:28:16Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=d8f406953e431242fd6f0ecc3f13549bd0b781f1'/>
<id>urn:sha1:d8f406953e431242fd6f0ecc3f13549bd0b781f1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Missing include.</title>
<updated>2020-02-03T09:17:16Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-02-03T09:17:16Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=56223f255e23a8ce800460f7561d3dcbf1bbef76'/>
<id>urn:sha1:56223f255e23a8ce800460f7561d3dcbf1bbef76</id>
<content type='text'>
</content>
</entry>
<entry>
<title>boost exception test.</title>
<updated>2020-02-02T19:17:35Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-02-02T18:56:22Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=0b59b4f8da889a547a1be03f51118769d73aff2a'/>
<id>urn:sha1:0b59b4f8da889a547a1be03f51118769d73aff2a</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>Use a non-pointer boost::thread and a std::atomic for the stop flag.</title>
<updated>2020-01-30T21:19:17Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-01-30T21:19:17Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=a1546fb6c4e59621d99271b8ca996e96a574f7b3'/>
<id>urn:sha1:a1546fb6c4e59621d99271b8ca996e96a574f7b3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Missing #include for previous.</title>
<updated>2020-01-28T22:49:07Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-01-28T22:49:07Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=05f2028ec1280a98050dc22609879230337a35ef'/>
<id>urn:sha1:05f2028ec1280a98050dc22609879230337a35ef</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix deadlock during content examination.</title>
<updated>2020-01-28T22:23:47Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-01-28T22:23:47Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=df48c75c38dd788835a93540aea243a2dac4bb10'/>
<id>urn:sha1:df48c75c38dd788835a93540aea243a2dac4bb10</id>
<content type='text'>
Before this fix, the following situation could happen in threads
A and B:

A: Some DONE signal happens; this triggers setup_pieces which
   takes a lock on the player mutex.

B: FFmpegContent::examine takes a lock on the content mutex.
B: FFmpegContent::examine adds a stream
B: That causes STREAMS PENDING to be emitted.
B: This tries to take a lock on the player mutex so it can update _suspended

A: setup_pieces tries to access some content information, hence
   tries to take a lock on the content mutex.

Now B is holding the CL and awaiting the PL and A is holding
the PL and awaiting the CL.

It feels like the root cause of this is that while setup_pieces
is happening another change (which would itself cause setup_pieces)
is announced, and this isn't dealt with properly.

There are two steps here; _suspended is protected with an atomic
rather than using _mutex, and also it can cope with being updated
recursively.
</content>
</entry>
<entry>
<title>Fix crash with sub-sample push parts in AudioMerger.</title>
<updated>2020-01-28T20:58:47Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-01-27T23:19:52Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=95f4d8740de74cdecf6658ab2607c0af9732904e'/>
<id>urn:sha1:95f4d8740de74cdecf6658ab2607c0af9732904e</id>
<content type='text'>
Forward-ported from b86b15391074a68149f8c4a51958c7873d74def0 in master.
</content>
</entry>
<entry>
<title>Another thinko fix.</title>
<updated>2020-01-25T20:13:33Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-01-25T20:13:33Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=d291ce8580aabc2e4340c9887ea1733325bb1b80'/>
<id>urn:sha1:d291ce8580aabc2e4340c9887ea1733325bb1b80</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix thinko two commits ago.</title>
<updated>2020-01-25T09:05:34Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-01-25T09:05:34Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=f62398d081db17afd1816bfc8312afb386f22e78'/>
<id>urn:sha1:f62398d081db17afd1816bfc8312afb386f22e78</id>
<content type='text'>
</content>
</entry>
</feed>
