Merge master.
[dcpomatic.git] / src / wx / film_viewer.cc
index e6b8bf8dd06cd37b6d4e67fd41a3f3cec2c3381d..a4a293918df44cedec1b4c5ddc0a4f3ab5587d07 100644 (file)
@@ -213,8 +213,14 @@ void
 FilmViewer::slider_moved ()
 {
        if (_film && _player) {
-               _player->seek (_slider->GetValue() * _film->length() / 4096, false);
-               fetch_next_frame ();
+               try {
+                       _player->seek (_slider->GetValue() * _film->length() / 4096, false);
+                       fetch_next_frame ();
+               } catch (OpenFileError& e) {
+                       /* There was a problem opening a content file; we'll let this slide as it
+                          probably means a missing content file, which we're already taking care of.
+                       */
+               }
        }
 }
 
@@ -253,6 +259,13 @@ FilmViewer::calculate_sizes ()
        _out_size.width = max (64, _out_size.width);
        _out_size.height = max (64, _out_size.height);
 
+       /* The player will round its image down to the nearest 4 pixels
+          to speed up its scale, so do similar here to avoid black borders
+          around things.  This is a bit of a hack.
+       */
+       _out_size.width &= ~3;
+       _out_size.height &= ~3;
+
        _player->set_video_container_size (_out_size);
 }
 
@@ -382,8 +395,14 @@ FilmViewer::back_clicked ()
                p = 0;
        }
        
-       _player->seek (p, true);
-       fetch_next_frame ();
+       try {
+               _player->seek (p, true);
+               fetch_next_frame ();
+       } catch (OpenFileError& e) {
+               /* There was a problem opening a content file; we'll let this slide as it
+                  probably means a missing content file, which we're already taking care of.
+               */
+       }
 }
 
 void