diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-10-21 00:55:52 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-01-08 21:56:47 +0100 |
| commit | 5eb8b5c3a1566aef638e9d9df03b88d320735092 (patch) | |
| tree | eb33df0144e1784efcf5d46e0dca9e19f6bff8b8 /src/wx/video_view.cc | |
| parent | ca3393a75c1685d1615ff678b58bd3b75fe79cd2 (diff) | |
Barely-functioning GL playback with new arrangement.
Diffstat (limited to 'src/wx/video_view.cc')
| -rw-r--r-- | src/wx/video_view.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/wx/video_view.cc b/src/wx/video_view.cc index eb85079c3..22cad3979 100644 --- a/src/wx/video_view.cc +++ b/src/wx/video_view.cc @@ -19,6 +19,9 @@ */ #include "video_view.h" +#include "wx_util.h" +#include "film_viewer.h" +#include "lib/butler.h" void VideoView::clear () @@ -26,3 +29,34 @@ VideoView::clear () _player_video.first.reset (); _player_video.second = dcpomatic::DCPTime (); } + +/** @param non_blocking true to return false quickly if no video is available quickly. + * @return false if we gave up because it would take too long, otherwise true. + */ +bool +VideoView::get_next_frame (bool non_blocking) +{ + DCPOMATIC_ASSERT (_viewer->butler()); + _viewer->_gets++; + + do { + Butler::Error e; + _player_video = _viewer->butler()->get_video (!non_blocking, &e); + if (!_player_video.first && e == Butler::AGAIN) { + return false; + } + } while ( + _player_video.first && + _viewer->film()->three_d() && + _viewer->_eyes != _player_video.first->eyes() && + _player_video.first->eyes() != EYES_BOTH + ); + + try { + _viewer->butler()->rethrow (); + } catch (DecodeError& e) { + error_dialog (get(), e.what()); + } + + return true; +} |
