diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-12-18 00:07:54 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-12-18 00:07:54 +0000 |
| commit | cf42297fb317e27633c58dc34beb88425c4bf0ef (patch) | |
| tree | d7f4678a132215d6dbbd2ead322ad28c7218895e /src | |
| parent | a2315091cd9471016e7ed0165d9152a335b8af4f (diff) | |
Fix old image hanging around when creating a new film.
Diffstat (limited to 'src')
| -rw-r--r-- | src/wx/film_viewer.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc index 9d024bca1..ae6d38560 100644 --- a/src/wx/film_viewer.cc +++ b/src/wx/film_viewer.cc @@ -174,6 +174,7 @@ FilmViewer::paint_panel (wxPaintEvent& ev) wxPaintDC dc (_panel); if (!_display_frame || !_film) { + dc.Clear (); return; } @@ -239,7 +240,7 @@ FilmViewer::update_from_raw () void FilmViewer::raw_to_display () { - if (!_out_width || !_out_height || !_film) { + if (!_raw_frame || !_out_width || !_out_height || !_film) { return; } @@ -312,10 +313,17 @@ FilmViewer::process_video (shared_ptr<Image> image, shared_ptr<Subtitle> sub) void FilmViewer::get_frame () { + /* Clear our raw frame in case we don't get a new one */ + _raw_frame.reset (); + try { shared_ptr<Image> last = _display_frame; while (last == _display_frame) { if (_decoders.video->pass ()) { + /* We didn't get a frame before the decoder gave up, + so clear our display frame. + */ + _display_frame.reset (); break; } } |
