_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;
}
FilmViewer::display_player_video ()
{
if (!_player_video.first) {
- _frame.reset ();
+ _video_view->set_image (shared_ptr<Image>());
refresh_view ();
return;
}
_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);
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;
using std::cout;
using boost::shared_ptr;
+using boost::optional;
GLVideoView::GLVideoView (wxWindow *parent)
{
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());