summaryrefslogtreecommitdiff
path: root/src/lib/shuffler.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-04-05 02:41:40 +0100
committerCarl Hetherington <cth@carlh.net>2018-04-05 02:41:40 +0100
commit4775971005de645dd539c7c940a699758d535c46 (patch)
treecbd7804693f1082ad76ad46e0b440d9128428452 /src/lib/shuffler.cc
parentbb733a578dd3ca906d6a268805babf40b0a67a48 (diff)
Wait for in-order input to shuffler before emitting anything, otherwise
we emit a crucial frame and then fail to carry on because we miss it.
Diffstat (limited to 'src/lib/shuffler.cc')
-rw-r--r--src/lib/shuffler.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lib/shuffler.cc b/src/lib/shuffler.cc
index 889d81c71..9e90f180d 100644
--- a/src/lib/shuffler.cc
+++ b/src/lib/shuffler.cc
@@ -50,8 +50,8 @@ Shuffler::video (weak_ptr<Piece> weak_piece, ContentVideo video)
shared_ptr<Piece> piece = weak_piece.lock ();
DCPOMATIC_ASSERT (piece);
- if (!_last) {
- /* We haven't seen anything since the last clear() so assume everything is OK */
+ if (!_last && video.eyes == EYES_LEFT) {
+ /* We haven't seen anything since the last clear() and we have some eyes-left so assume everything is OK */
Video (weak_piece, video);
_last = video;
return;
@@ -62,6 +62,7 @@ Shuffler::video (weak_ptr<Piece> weak_piece, ContentVideo video)
while (
!_store.empty() &&
+ _last &&
(
(_store.front().second.frame == _last->frame && _store.front().second.eyes == EYES_RIGHT && _last->eyes == EYES_LEFT) ||
(_store.front().second.frame == (_last->frame + 1) && _store.front().second.eyes == EYES_LEFT && _last->eyes == EYES_RIGHT) ||