diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-04-07 22:27:54 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-04-07 22:27:54 +0100 |
| commit | 6e6ebf3122333b38333482bce64df3e6e61e64c4 (patch) | |
| tree | 0ab8aee046269d4acbd512331e57dce86f5a206f /src/lib | |
| parent | b52ecf81298fa814ec96d56a82a66b3874582d7f (diff) | |
Fix silly crash in shuffler.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/shuffler.cc | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/lib/shuffler.cc b/src/lib/shuffler.cc index 00edc27d5..59656317d 100644 --- a/src/lib/shuffler.cc +++ b/src/lib/shuffler.cc @@ -58,19 +58,24 @@ Shuffler::video (weak_ptr<Piece> weak_piece, ContentVideo video) _store.push_back (make_pair (weak_piece, video)); _store.sort (Comparator()); - bool const store_front_in_sequence = - !_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) - ); - - /* store_front_in_sequence means everything is ok; otherwise if the store is getting too big just - start emitting things as best we can. This can easily happen if, for example, there is only content - for one eye in some part of the timeline. - */ - while (store_front_in_sequence || _store.size() > 8) { + while (true) { + + bool const store_front_in_sequence = + !_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) + ); + + if (!store_front_in_sequence && _store.size() <= 8) { + /* store_front_in_sequence means everything is ok; otherwise if the store is getting too big just + start emitting things as best we can. This can easily happen if, for example, there is only content + for one eye in some part of the timeline. + */ + break; + } + Video (_store.front().first, _store.front().second); _last = _store.front().second; _store.pop_front (); |
