<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/butler.cc, branch v2.13.78</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=v2.13.78</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=v2.13.78'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2018-11-21T23:17:00Z</updated>
<entry>
<title>Tidy and fix logging.</title>
<updated>2018-11-21T23:17:00Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-11-21T23:17:00Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=ad1ef39eda58b3a919ea3b7084401a0439409ec6'/>
<id>urn:sha1:ad1ef39eda58b3a919ea3b7084401a0439409ec6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Do image crop/scale/window in the butler prepare threads.</title>
<updated>2018-11-06T23:06:21Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-11-06T23:06:21Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=f41310384889e4cfb6e709d098b316e212d8bf22'/>
<id>urn:sha1:f41310384889e4cfb6e709d098b316e212d8bf22</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Double up on DCP-decode prepare threads and readahead as I think it provides a slight performance improvement for playback.</title>
<updated>2018-11-06T02:15:38Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-11-06T02:15:38Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=de0df88ec4c6e4e36fe31765239041a35513c94c'/>
<id>urn:sha1:de0df88ec4c6e4e36fe31765239041a35513c94c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add some code to help with profiling the player.</title>
<updated>2018-11-06T00:01:26Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-11-06T00:01:26Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=d759f6003067e8376899b50e5692b2bbb4e870cc'/>
<id>urn:sha1:d759f6003067e8376899b50e5692b2bbb4e870cc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Store audio/video even when suspended.</title>
<updated>2018-09-11T10:42:40Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-09-11T10:42:40Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=2a0ad7979b208f84916b13f7a37998aa3701e371'/>
<id>urn:sha1:2a0ad7979b208f84916b13f7a37998aa3701e371</id>
<content type='text'>
This is important for audio.  _audio.put() must be called with
sequential data, so if you're going to discard audio (as was
happening when _suspended) you need to clear _audio before
put()ting any more.

This happens with seek; when _pending_seek_position is set
_audio is cleared and then nothing more is added until the
seek is done.

_suspended may be set and then reset with no change having
happened (type _CANCELLED) so I think you have to keep storing
data in this case.  It will be discarded when the seek comes
around after a _DONE change.
</content>
</entry>
<entry>
<title>Allow the butler to say "try again later" when get_video() is called</title>
<updated>2018-09-04T11:50:25Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-09-04T11:50:25Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=a57717d54c34096d80a467ad78e9fdcecca70b2c'/>
<id>urn:sha1:a57717d54c34096d80a467ad78e9fdcecca70b2c</id>
<content type='text'>
while it's suspended.  Then make the GUI follow that suggestion.
Should
</content>
</entry>
<entry>
<title>Basics of splitting CCAP streams into different assets.</title>
<updated>2018-08-29T10:58:06Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-08-28T22:34:56Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=1db0293ad36605da9ca8daa8736ef581f4f6a34e'/>
<id>urn:sha1:1db0293ad36605da9ca8daa8736ef581f4f6a34e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Await video in get_video() if we are suspended.</title>
<updated>2018-08-22T21:00:11Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-08-22T21:00:11Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=43b8c87f18793d57a9752f360614a5640dad9810'/>
<id>urn:sha1:43b8c87f18793d57a9752f360614a5640dad9810</id>
<content type='text'>
Fix player_change to summon the butler if _suspended is changed, and
ensure that the butler's Player::Change handler is the first to be
called so that suspension is sorted out before any other
Player::Change handlers might call get_video().

This is to prevent the sequence

1. player change-pending emitted
2. hence butler suspended -&gt; 1
3. player change-done emitted
4. first handler is something which calls get_video()
5. get_video() awaits video which will never arrive because the butler
is suspended.

Here there is a pending change-done signal to butler.  Ensuring this
arrives before the handler which calls get_video() sorts it out.
</content>
</entry>
<entry>
<title>Allow nested butler suspensions.</title>
<updated>2018-08-20T11:01:34Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-08-20T11:01:34Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=a638a231d1cf8d04840b62354911520dab6fb6b3'/>
<id>urn:sha1:a638a231d1cf8d04840b62354911520dab6fb6b3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Replace May/Done/NotDone signal sets with one signal and extend</title>
<updated>2018-08-19T00:29:04Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-08-19T00:04:59Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=6c7489e5d778d3e71065d88a094a7383ba2c117d'/>
<id>urn:sha1:6c7489e5d778d3e71065d88a094a7383ba2c117d</id>
<content type='text'>
this treatment to anything that caused Player::setup_pieces.  This should
fix out-of-sequence Player emissions caused by setup_pieces being called
by one thread while the butler is calling pass().
</content>
</entry>
</feed>
