<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/butler.cc, branch v2.13.41</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=v2.13.41</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=v2.13.41'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2018-08-05T00:15:45Z</updated>
<entry>
<title>Get closed caption view data from the butler, rather than the player.</title>
<updated>2018-08-05T00:15:45Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-08-05T00:15:45Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=3a7b6acdb993864f319a6ceb3bc4c3fb7d4aaefd'/>
<id>urn:sha1:3a7b6acdb993864f319a6ceb3bc4c3fb7d4aaefd</id>
<content type='text'>
You can't introduce the butler (so that the player is ahead of time)
and then ask the player what should be in the frame that is being
displayed "now"; the player will already have moved on.
</content>
</entry>
<entry>
<title>Remove unused parameter.</title>
<updated>2018-08-03T23:18:22Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-08-03T23:18:22Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=984455f1a072b0fa42879d03042e82df0a3cb3bd'/>
<id>urn:sha1:984455f1a072b0fa42879d03042e82df0a3cb3bd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Timestamp audio emissions from butler and hence discard very late</title>
<updated>2018-08-03T23:01:30Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-08-03T23:01:30Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=54e6f206305d4275808cfce36987edcc61a6a779'/>
<id>urn:sha1:54e6f206305d4275808cfce36987edcc61a6a779</id>
<content type='text'>
audio in FilmViewer.  This should help with the case where lots
of video frames are rapidly discarded when they are late but the
corresponding audio is not, hence audio buffers get overfilled.
</content>
</entry>
<entry>
<title>A variety of changes to improve (but not entirely fix) behaviour</title>
<updated>2018-08-02T22:22:49Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-08-02T22:22:49Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=4fe1a062eb31d680b8b4ac0191b9e2fc2d6aaec3'/>
<id>urn:sha1:4fe1a062eb31d680b8b4ac0191b9e2fc2d6aaec3</id>
<content type='text'>
when moving content (or otherwise changing the playlist) while playing.

This commit refills the butler when things change in certain ways,
and improves locking to cope with Player methods being called from
the GUI and butler threads at the same time.
</content>
</entry>
<entry>
<title>Remove debug code.</title>
<updated>2018-07-27T15:21:21Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-07-27T15:21:21Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=1e0425dc769a0a909d20de7af373bff3f38de8d2'/>
<id>urn:sha1:1e0425dc769a0a909d20de7af373bff3f38de8d2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Protect the public API of Player with a mutex, since</title>
<updated>2018-07-26T19:59:04Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-07-26T19:59:04Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=3009a585f5222a83213c786e3c564c740f450d18'/>
<id>urn:sha1:3009a585f5222a83213c786e3c564c740f450d18</id>
<content type='text'>
seek() and pass() may be called from the Butler thread
ad the same time as other Player methods are called from
the GUI thread (by FilmViewer and ClosedCaptionViewDialog).
</content>
</entry>
<entry>
<title>Add some timing logs for playback.</title>
<updated>2018-06-22T00:06:49Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-06-22T00:06:49Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=3f8e7d70bb81890246f9cea54cbc494b027dcc53'/>
<id>urn:sha1:3f8e7d70bb81890246f9cea54cbc494b027dcc53</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Throw exceptions when things in the butler get really out of hand.</title>
<updated>2018-06-11T11:22:46Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-06-11T11:22:46Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=9d72b829d65462cdcf7c0e267181ea814ad37071'/>
<id>urn:sha1:9d72b829d65462cdcf7c0e267181ea814ad37071</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Hold lock for the whole of Butler::video().  Fixes jumpy nudge-seek</title>
<updated>2018-02-18T01:28:39Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-02-18T01:26:03Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=37252b5a04501c1ba3c27c51d043235046775f78'/>
<id>urn:sha1:37252b5a04501c1ba3c27c51d043235046775f78</id>
<content type='text'>
when playing DCPs.

Before, the lock was only held to check _pending_seek_position.
With that arrangement, this sequence was possible:
1. video arrives, check _pending_seek_position, decide it's ok, release lock
2. Butler::seek called, sets _pending_seek_position, clears _video
3. video that arrived in #1 is put into _video by ::video()
4. that video is given to an awaiting get_video() call.
This clearly subverts the attempts not to accept new video data while
a seek is pending.
</content>
</entry>
<entry>
<title>Name threads on Linux.</title>
<updated>2018-02-16T20:24:37Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-02-16T20:24:37Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=8e4a2e5ea578ac4f0f41edb6145d5c0040e33ec2'/>
<id>urn:sha1:8e4a2e5ea578ac4f0f41edb6145d5c0040e33ec2</id>
<content type='text'>
</content>
</entry>
</feed>
