Merge branch 'master' of ssh://git.carlh.net/home/carl/git/dcpomatic
[dcpomatic.git] / src / wx / film_viewer.cc
index 463854992f16347c875e738565d74221501b65e1..d954e1818a59a7b89cb5b20b1c133267661595c3 100644 (file)
@@ -224,7 +224,7 @@ FilmViewer::set_film (shared_ptr<Film> film)
        _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 */
@@ -294,8 +294,14 @@ FilmViewer::get ()
        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))
                );
@@ -720,8 +726,12 @@ FilmViewer::setup_sensitivity ()
 }
 
 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) {