<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/player.h, branch 1608</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=1608</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=1608'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2020-01-28T22:49:07Z</updated>
<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>Cache film length for Player::pass.</title>
<updated>2020-01-25T00:47:00Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-07-23T21:55:15Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=af0edaf7dcd36c367cb585c98e8413c5347a7386'/>
<id>urn:sha1:af0edaf7dcd36c367cb585c98e8413c5347a7386</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix failure to load OV after adding a VF to a project.</title>
<updated>2019-10-13T21:47:17Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-10-13T21:47:17Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=7c73ec405fdb55bd78d82d764999b5af6d81e973'/>
<id>urn:sha1:7c73ec405fdb55bd78d82d764999b5af6d81e973</id>
<content type='text'>
This has the same cause as
19f51503621a57794bd79bac053c9e6549a69f46
i.e. the DCPDecoder re-use optimisation.  This commit tries to
re-fix 19f515 in a more general way which also takes into account
the OV/VF bug.  It also adds a unit test.
</content>
</entry>
<entry>
<title>Make player more tolerant of some DCP errors.</title>
<updated>2019-08-30T22:16:21Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-08-30T22:16:21Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=1f88a38a2a607c21988a403e76f315444c4be36b'/>
<id>urn:sha1:1f88a38a2a607c21988a403e76f315444c4be36b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Put Font and Screen into 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:56:32Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=f41818f14369f170475b7f2bde1a2dd856517b14'/>
<id>urn:sha1:f41818f14369f170475b7f2bde1a2dd856517b14</id>
<content type='text'>
</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>Fix assumption of 48kHz DCP audio in AudioRingBuffers consistency check (#1436).</title>
<updated>2018-12-22T23:32:59Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-12-22T23:32:59Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=b73576594b252e033539bec964d72403d3775585'/>
<id>urn:sha1:b73576594b252e033539bec964d72403d3775585</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Build Empty objects from the presence or absence of decoders in</title>
<updated>2018-09-03T23:39:39Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-09-03T23:39:39Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=1938b1b08d38fc199717d1875a61ef05e5b965de'/>
<id>urn:sha1:1938b1b08d38fc199717d1875a61ef05e5b965de</id>
<content type='text'>
Pieces, rather than the presence or absence of content.  This seems better
because of cases like encrypted DCPs without a a KDM: here we may have content
but no decoder.
</content>
</entry>
<entry>
<title>Remove unnecessary subtitle scale (I think).</title>
<updated>2018-09-02T02:12:43Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-09-02T02:12:43Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=63a1ada934c258dfa60a92f7a406b084531856d9'/>
<id>urn:sha1:63a1ada934c258dfa60a92f7a406b084531856d9</id>
<content type='text'>
</content>
</entry>
</feed>
