Don't seek during timeline drags.
authorCarl Hetherington <cth@carlh.net>
Sun, 12 Aug 2018 21:02:25 +0000 (22:02 +0100)
committerCarl Hetherington <cth@carlh.net>
Sun, 12 Aug 2018 21:02:25 +0000 (22:02 +0100)
src/lib/butler.cc
src/lib/butler.h

index 882d8bf580d54d32d01f6a53730ff52b57543207..6789d74a5b925858caa234600fd734dfd7e1100b 100644 (file)
@@ -64,7 +64,7 @@ Butler::Butler (shared_ptr<Player> player, shared_ptr<Log> log, AudioMapping aud
        _player_video_connection = _player->Video.connect (bind (&Butler::video, this, _1, _2));
        _player_audio_connection = _player->Audio.connect (bind (&Butler::audio, this, _1, _2));
        _player_text_connection = _player->Text.connect (bind (&Butler::text, this, _1, _2, _3));
-       _player_changed_connection = _player->Changed.connect (bind (&Butler::player_changed, this));
+       _player_changed_connection = _player->Changed.connect (bind (&Butler::player_changed, this, _2));
        _thread = new boost::thread (bind (&Butler::thread, this));
 #ifdef DCPOMATIC_LINUX
        pthread_setname_np (_thread->native_handle(), "butler");
@@ -309,10 +309,10 @@ Butler::memory_used () const
 }
 
 void
-Butler::player_changed ()
+Butler::player_changed (bool frequent)
 {
        boost::mutex::scoped_lock lm (_mutex);
-       if (_died || _pending_seek_position) {
+       if (_died || _pending_seek_position || frequent) {
                return;
        }
 
index 0b926047a63e50fb054a167a161b220de28ffd4e..5b09f6e5f836bfa861e4681588608bad9e8f0d6e 100644 (file)
@@ -56,7 +56,7 @@ private:
        void text (PlayerText pt, TextType type, DCPTimePeriod period);
        bool should_run () const;
        void prepare (boost::weak_ptr<PlayerVideo> video) const;
-       void player_changed ();
+       void player_changed (bool frequent);
        void seek_unlocked (DCPTime position, bool accurate);
 
        boost::shared_ptr<Player> _player;