h_sizer->Add (_play_button, 0, wxEXPAND);
h_sizer->Add (_slider, 1, wxEXPAND);
- _v_sizer->Add (h_sizer, 0, wxEXPAND);
+ _v_sizer->Add (h_sizer, 0, wxEXPAND | wxALL, 6);
_panel->Connect (wxID_ANY, wxEVT_PAINT, wxPaintEventHandler (FilmViewer::paint_panel), 0, this);
_panel->Connect (wxID_ANY, wxEVT_SIZE, wxSizeEventHandler (FilmViewer::panel_sized), 0, this);
o.decode_subtitles = true;
o.video_sync = false;
_decoders = decoder_factory (_film, o);
+ if (_decoders.video == 0) {
+ break;
+ }
_decoders.video->Video.connect (bind (&FilmViewer::process_video, this, _1, _2, _3));
_decoders.video->OutputChanged.connect (boost::bind (&FilmViewer::decoder_changed, this));
_decoders.video->set_subtitle_stream (_film->subtitle_stream());
update_from_raw ();
break;
case Film::SUBTITLE_STREAM:
- _decoders.video->set_subtitle_stream (_film->subtitle_stream ());
+ if (_decoders.video) {
+ _decoders.video->set_subtitle_stream (_film->subtitle_stream ());
+ }
break;
default:
break;
void
FilmViewer::decoder_changed ()
{
- if (_decoders.video->seek_to_last ()) {
+ if (_decoders.video == 0 || _decoders.video->seek_to_last ()) {
return;
}
void
FilmViewer::timer (wxTimerEvent &)
{
- if (!_film) {
+ if (!_film || !_decoders.video) {
return;
}
void
FilmViewer::slider_moved (wxScrollEvent &)
{
- if (!_film || !_film->length()) {
+ if (!_film || !_film->length() || !_decoders.video) {
return;
}
{
/* Clear our raw frame in case we don't get a new one */
_raw_frame.reset ();
+
+ if (_decoders.video == 0) {
+ _display_frame.reset ();
+ return;
+ }
try {
_got_frame = false;