_player->set_always_burn_open_subtitles ();
_player->set_play_referenced ();
- _film->Changed.connect (boost::bind (&FilmViewer::film_changed, this, _1));
+ _film->Change.connect (boost::bind (&FilmViewer::film_change, this, _1, _2));
_player->Change.connect (boost::bind (&FilmViewer::player_change, this, _1, _2, _3));
/* Keep about 1 second's worth of history samples */
DCPOMATIC_ASSERT (_butler);
do {
- _player_video = _butler->get_video ();
+ Butler::Error e;
+ _player_video = _butler->get_video (&e);
+ if (!_player_video.first && e == Butler::AGAIN) {
+ signal_manager->when_idle (boost::bind(&FilmViewer::get, this));
+ return;
+ }
} while (
+ _player_video.first &&
_film->three_d() &&
((_eye->GetSelection() == 0 && _player_video.first->eyes() == EYES_RIGHT) || (_eye->GetSelection() == 1 && _player_video.first->eyes() == EYES_LEFT))
);
}
void
-FilmViewer::film_changed (Film::Property p)
+FilmViewer::film_change (ChangeType type, Film::Property p)
{
+ if (type != CHANGE_TYPE_DONE) {
+ return;
+ }
+
if (p == Film::CONTENT || p == Film::THREE_D) {
setup_sensitivity ();
} else if (p == Film::AUDIO_CHANNELS) {