diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-11-21 23:43:23 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-01-08 21:56:47 +0100 |
| commit | f77529bdfa01ae13f889442900988fc401b63c62 (patch) | |
| tree | facabf65f292fdfcf5fbffb6964d3d84f11120af /src/wx/video_view.cc | |
| parent | b3b371294ed5e6cc18ef64ba1b06ca76726b903a (diff) | |
Various cleanups and thread-safety.
Diffstat (limited to 'src/wx/video_view.cc')
| -rw-r--r-- | src/wx/video_view.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/wx/video_view.cc b/src/wx/video_view.cc index 5dd857fab..ee14f4a33 100644 --- a/src/wx/video_view.cc +++ b/src/wx/video_view.cc @@ -23,6 +23,8 @@ #include "film_viewer.h" #include "lib/butler.h" +using boost::shared_ptr; + VideoView::VideoView (FilmViewer* viewer) : _viewer (viewer) #ifdef DCPOMATIC_VARIANT_SWAROOP @@ -31,6 +33,7 @@ VideoView::VideoView (FilmViewer* viewer) , _state_timer ("viewer") , _video_frame_rate (0) , _eyes (EYES_LEFT) + , _three_d (false) , _dropped (0) , _gets (0) { @@ -45,30 +48,32 @@ VideoView::clear () _player_video.second = dcpomatic::DCPTime (); } -/** @param non_blocking true to return false quickly if no video is available quickly. +/** Could be called from any thread. + * @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) { - if (_length == dcpomatic::DCPTime()) { + if (length() == dcpomatic::DCPTime()) { return true; } - DCPOMATIC_ASSERT (_viewer->butler()); + shared_ptr<Butler> butler = _viewer->butler (); + DCPOMATIC_ASSERT (butler); add_get (); boost::mutex::scoped_lock lm (_mutex); do { Butler::Error e; - _player_video = _viewer->butler()->get_video (!non_blocking, &e); + _player_video = butler->get_video (!non_blocking, &e); if (!_player_video.first && e == Butler::AGAIN) { return false; } } while ( _player_video.first && - _viewer->film()->three_d() && + _three_d && _eyes != _player_video.first->eyes() && _player_video.first->eyes() != EYES_BOTH ); |
