summaryrefslogtreecommitdiff
path: root/src/wx/film_viewer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/wx/film_viewer.cc')
-rw-r--r--src/wx/film_viewer.cc24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc
index 4e39480b6..f4ad700ad 100644
--- a/src/wx/film_viewer.cc
+++ b/src/wx/film_viewer.cc
@@ -150,7 +150,13 @@ FilmViewer::set_film (shared_ptr<Film> f)
void
FilmViewer::decoder_changed ()
{
- seek_and_update (_decoders.video->last_source_frame ());
+ if (_decoders.video->seek_to_last ()) {
+ return;
+ }
+
+ get_frame ();
+ _panel->Refresh ();
+ _panel->Update ();
}
void
@@ -166,7 +172,7 @@ FilmViewer::timer (wxTimerEvent& ev)
get_frame ();
if (_film->length()) {
- int const new_slider_position = 4096 * _decoders.video->last_source_frame() / _film->length().get();
+ int const new_slider_position = 4096 * _decoders.video->last_source_time() / (_film->length().get() * _film->frames_per_second());
if (new_slider_position != _slider->GetValue()) {
_slider->SetValue (new_slider_position);
}
@@ -199,22 +205,14 @@ FilmViewer::paint_panel (wxPaintEvent& ev)
void
FilmViewer::slider_moved (wxCommandEvent& ev)
{
- if (!_film) {
+ if (!_film || !_film->length()) {
return;
}
- if (_film->length()) {
- seek_and_update (_slider->GetValue() * _film->length().get() / 4096);
- }
-}
-
-void
-FilmViewer::seek_and_update (SourceFrame f)
-{
- if (_decoders.video->seek (f)) {
+ if (_decoders.video->seek (_slider->GetValue() * _film->length().get() / (4096 * _film->frames_per_second()))) {
return;
}
-
+
get_frame ();
_panel->Refresh ();
_panel->Update ();