X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fvideo_view.cc;h=b0e16737c9c91ebbe88c4b4c8777869c1c0aef9d;hb=08f96200aacf9f91ef3e3f5b80224a5b2437f279;hp=4edc2cd23a28cf0f3b943fe3a9d6cb409fecd973;hpb=579d18cb7770efe2da03afaf6a33faaf624119e3;p=dcpomatic.git diff --git a/src/wx/video_view.cc b/src/wx/video_view.cc index 4edc2cd23..b0e16737c 100644 --- a/src/wx/video_view.cc +++ b/src/wx/video_view.cc @@ -24,6 +24,7 @@ #include "lib/butler.h" #include +using std::pair; using boost::shared_ptr; using boost::optional; @@ -37,6 +38,7 @@ VideoView::VideoView (FilmViewer* viewer) , _eyes (EYES_LEFT) , _three_d (false) , _dropped (0) + , _errored (0) , _gets (0) { @@ -71,10 +73,11 @@ VideoView::get_next_frame (bool non_blocking) do { Butler::Error e; - _player_video = butler->get_video (!non_blocking, &e); - if (!_player_video.first && e == Butler::AGAIN) { + pair, dcpomatic::DCPTime> pv = butler->get_video (!non_blocking, &e); + if (!pv.first && e == Butler::AGAIN) { return false; } + _player_video = pv; } while ( _player_video.first && _three_d && @@ -82,6 +85,10 @@ VideoView::get_next_frame (bool non_blocking) _player_video.first->eyes() != EYES_BOTH ); + if (_player_video.first && _player_video.first->error()) { + ++_errored; + } + return true; } @@ -113,17 +120,18 @@ VideoView::start () { boost::mutex::scoped_lock lm (_mutex); _dropped = 0; + _errored = 0; } bool VideoView::refresh_metadata (shared_ptr film, dcp::Size video_container_size, dcp::Size film_frame_size) { - boost::mutex::scoped_lock lm (_mutex); - if (!_player_video.first) { + pair, dcpomatic::DCPTime> pv = player_video (); + if (!pv.first) { return false; } - if (!_player_video.first->reset_metadata (film, video_container_size, film_frame_size)) { + if (!pv.first->reset_metadata (film, video_container_size, film_frame_size)) { return false; }