Hold lock for the whole of Butler::video(). Fixes jumpy nudge-seek
authorCarl Hetherington <cth@carlh.net>
Sun, 18 Feb 2018 01:26:03 +0000 (01:26 +0000)
committerCarl Hetherington <cth@carlh.net>
Sun, 18 Feb 2018 01:28:39 +0000 (01:28 +0000)
commit37252b5a04501c1ba3c27c51d043235046775f78
treeb9ed24dd20b4bf4e9da65265014bddf4e1ca78a9
parentf7446b20d4ce0575906ee9e40dcee3c74af62860
Hold lock for the whole of Butler::video().  Fixes jumpy nudge-seek
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.
src/lib/butler.cc