From a3ec24ce1952a3bfd556d30b50cee79cc57436cb Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 7 Nov 2018 00:42:45 +0000 Subject: [PATCH] swaroop: new slightly-hacky way to make background image appear on stop. --- src/wx/controls.cc | 4 ---- src/wx/film_viewer.cc | 29 +++++++++++++++++++++-------- src/wx/film_viewer.h | 1 + 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/wx/controls.cc b/src/wx/controls.cc index f7573c28b..cf805e8f7 100644 --- a/src/wx/controls.cc +++ b/src/wx/controls.cc @@ -221,10 +221,6 @@ Controls::add_clicked () if (!ok || !report_errors_from_last_job(this)) { return; } - if (_film->content().size() == 1) { - /* Put 1 frame of black at the start so when we seek to 0 we don't see anything */ - sel->set_position (DCPTime::from_frames(1, _film->video_frame_rate())); - } add_content_to_list (sel, _current_spl_view); setup_sensitivity (); } diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc index 6d9592b65..afa1940db 100644 --- a/src/wx/film_viewer.cc +++ b/src/wx/film_viewer.cc @@ -306,6 +306,22 @@ FilmViewer::timer () } } +bool +FilmViewer::maybe_draw_background_image (wxPaintDC& dc) +{ +#ifdef DCPOMATIC_VARIANT_SWAROOP + optional bg = Config::instance()->player_background_image(); + if (bg) { + wxImage image (std_to_wx(bg->string())); + wxBitmap bitmap (image); + dc.DrawBitmap (bitmap, max(0, (_panel_size.width - image.GetSize().GetWidth()) / 2), max(0, (_panel_size.height - image.GetSize().GetHeight()) / 2)); + return true; + } +#endif + + return false; +} + void FilmViewer::paint_panel () { @@ -313,14 +329,11 @@ FilmViewer::paint_panel () if (!_frame || !_film || !_out_size.width || !_out_size.height || _out_size != _frame->size()) { dc.Clear (); -#ifdef DCPOMATIC_VARIANT_SWAROOP - optional bg = Config::instance()->player_background_image(); - if (bg) { - wxImage image (std_to_wx(bg->string())); - wxBitmap bitmap (image); - dc.DrawBitmap (bitmap, max(0, (_panel_size.width - image.GetSize().GetWidth()) / 2), max(0, (_panel_size.height - image.GetSize().GetHeight()) / 2)); - } -#endif + maybe_draw_background_image (dc); + return; + } + + if (_video_position == DCPTime() && maybe_draw_background_image (dc)) { return; } diff --git a/src/wx/film_viewer.h b/src/wx/film_viewer.h index b0dbf56a3..6f5df7e49 100644 --- a/src/wx/film_viewer.h +++ b/src/wx/film_viewer.h @@ -108,6 +108,7 @@ private: void film_change (ChangeType, Film::Property); void recreate_butler (); void config_changed (Config::Property); + bool maybe_draw_background_image (wxPaintDC& dc); DCPTime time () const; DCPTime uncorrected_time () const; -- 2.30.2