From 181af337041e9c147344b5d32e413083d84fbd10 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 10 May 2019 01:32:58 +0100 Subject: Remove storage of _frame in FilmViewer. --- src/wx/film_viewer.cc | 11 +++++------ src/wx/film_viewer.h | 1 - src/wx/gl_video_view.cc | 6 ++++++ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc index c83db56de..00bc06e9b 100644 --- a/src/wx/film_viewer.cc +++ b/src/wx/film_viewer.cc @@ -132,13 +132,12 @@ FilmViewer::set_film (shared_ptr film) _player_video.first.reset (); _player_video.second = DCPTime (); - _frame.reset (); + _video_view->set_image (shared_ptr()); _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()); 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); diff --git a/src/wx/film_viewer.h b/src/wx/film_viewer.h index 76917f807..b897282d9 100644 --- a/src/wx/film_viewer.h +++ b/src/wx/film_viewer.h @@ -159,7 +159,6 @@ private: std::list _pending_player_changes; std::pair, dcpomatic::DCPTime> _player_video; - boost::shared_ptr _frame; dcpomatic::DCPTime _video_position; Position _inter_position; dcp::Size _inter_size; diff --git a/src/wx/gl_video_view.cc b/src/wx/gl_video_view.cc index d1e7c7326..0f0118e00 100644 --- a/src/wx/gl_video_view.cc +++ b/src/wx/gl_video_view.cc @@ -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 image) { + if (!image) { + _size = optional(); + return; + } + DCPOMATIC_ASSERT (image->pixel_format() == AV_PIX_FMT_RGB24); DCPOMATIC_ASSERT (!image->aligned()); -- cgit v1.2.3