Remove storage of _frame in FilmViewer.
authorCarl Hetherington <cth@carlh.net>
Fri, 10 May 2019 00:32:58 +0000 (01:32 +0100)
committerCarl Hetherington <cth@carlh.net>
Fri, 10 May 2019 22:43:55 +0000 (23:43 +0100)
src/wx/film_viewer.cc
src/wx/film_viewer.h
src/wx/gl_video_view.cc

index c83db56dec89279b75aab65e0ef24ea51df958e4..00bc06e9b7272e520402a3892a9dff2b153e0f12 100644 (file)
@@ -132,13 +132,12 @@ FilmViewer::set_film (shared_ptr<Film> film)
        _player_video.first.reset ();
        _player_video.second = DCPTime ();
 
-       _frame.reset ();
+       _video_view->set_image (shared_ptr<Image>());
        _closed_captions_dialog->clear ();
 
        if (!_film) {
                _player.reset ();
                recreate_butler ();
-               _frame.reset ();
                refresh_view ();
                return;
        }
@@ -251,7 +250,7 @@ void
 FilmViewer::display_player_video ()
 {
        if (!_player_video.first) {
-               _frame.reset ();
+               _video_view->set_image (shared_ptr<Image>());
                refresh_view ();
                return;
        }
@@ -285,9 +284,9 @@ FilmViewer::display_player_video ()
 
        _state_timer.set ("get image");
 
-       /* XXX: do we need to store _frame? */
-       _frame = _player_video.first->image (bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true);
-       _video_view->set_image (_frame);
+       _video_view->set_image (
+               _player_video.first->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true)
+               );
 
        _state_timer.set ("ImageChanged");
        ImageChanged (_player_video.first);
index 76917f8078122d3bfe46b4dc9255e86c7d3a15f1..b897282d9b697b1d8b8ebd64d7f933beb7907775 100644 (file)
@@ -159,7 +159,6 @@ private:
        std::list<int> _pending_player_changes;
 
        std::pair<boost::shared_ptr<PlayerVideo>, dcpomatic::DCPTime> _player_video;
-       boost::shared_ptr<const Image> _frame;
        dcpomatic::DCPTime _video_position;
        Position<int> _inter_position;
        dcp::Size _inter_size;
index d1e7c7326e3d43a90554f28eb61163639e17ee29..0f0118e00fde0699007c82431255006216a5d82a 100644 (file)
@@ -35,6 +35,7 @@
 
 using std::cout;
 using boost::shared_ptr;
+using boost::optional;
 
 GLVideoView::GLVideoView (wxWindow *parent)
 {
@@ -117,6 +118,11 @@ GLVideoView::paint (wxPaintEvent &)
 void
 GLVideoView::set_image (shared_ptr<const Image> image)
 {
+       if (!image) {
+               _size = optional<dcp::Size>();
+               return;
+       }
+
        DCPOMATIC_ASSERT (image->pixel_format() == AV_PIX_FMT_RGB24);
        DCPOMATIC_ASSERT (!image->aligned());