summaryrefslogtreecommitdiff
path: root/src/wx/simple_video_view.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-10-20 22:13:46 +0200
committerCarl Hetherington <cth@carlh.net>2020-01-08 21:56:47 +0100
commitc76b1fd7fe41a7e371ae1fe1dad21c87a19839f1 (patch)
treea487e093d93895fafb529edd6c4ae0e6e8030c3e /src/wx/simple_video_view.cc
parentdde431cafbb20ed3356ad5592be56af1d4458f46 (diff)
Move ::timer into SimpleVideoView.
Diffstat (limited to 'src/wx/simple_video_view.cc')
-rw-r--r--src/wx/simple_video_view.cc28
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 ();
+ }
+}