diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-10-20 22:13:46 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-01-08 21:56:47 +0100 |
| commit | c76b1fd7fe41a7e371ae1fe1dad21c87a19839f1 (patch) | |
| tree | a487e093d93895fafb529edd6c4ae0e6e8030c3e /src/wx/simple_video_view.cc | |
| parent | dde431cafbb20ed3356ad5592be56af1d4458f46 (diff) | |
Move ::timer into SimpleVideoView.
Diffstat (limited to 'src/wx/simple_video_view.cc')
| -rw-r--r-- | src/wx/simple_video_view.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/wx/simple_video_view.cc b/src/wx/simple_video_view.cc index 66af8f19f..baf566aee 100644 --- a/src/wx/simple_video_view.cc +++ b/src/wx/simple_video_view.cc @@ -22,6 +22,8 @@ #include "film_viewer.h" #include "wx_util.h" #include "lib/image.h" +#include "lib/dcpomatic_log.h" +#include "lib/butler.h" #include <dcp/util.h> #include <wx/wx.h> #include <boost/bind.hpp> @@ -45,6 +47,8 @@ SimpleVideoView::SimpleVideoView (FilmViewer* viewer, wxWindow* parent) _panel->Bind (wxEVT_PAINT, boost::bind (&SimpleVideoView::paint, this)); _panel->Bind (wxEVT_SIZE, boost::bind(boost::ref(Sized))); + + _timer.Bind (wxEVT_TIMER, boost::bind(&SimpleVideoView::timer, this)); } void @@ -135,3 +139,27 @@ SimpleVideoView::update () _panel->Refresh (); _panel->Update (); } + +void +SimpleVideoView::timer () +{ + if (!_viewer->_film || !_viewer->_playing) { + return; + } + + _viewer->get (false); + DCPTime const next = _viewer->_video_position + _viewer->one_video_frame(); + + if (next >= _viewer->_film->length()) { + _viewer->stop (); + _viewer->Finished (); + return; + } + + LOG_DEBUG_PLAYER("%1 -> %2; delay %3", next.seconds(), _viewer->time().seconds(), max((next.seconds() - _viewer->time().seconds()) * 1000, 1.0)); + _timer.Start (max ((next.seconds() - _viewer->time().seconds()) * 1000, 1.0), wxTIMER_ONE_SHOT); + + if (_viewer->_butler) { + _viewer->_butler->rethrow (); + } +} |
