Merge branch 'master' of ssh://git.carlh.net/home/carl/git/dcpomatic
[dcpomatic.git] / src / lib / player.h
index 3d774e1d93630cc7a32e56bee752d25dd9d690e9..a4fd80c161c565ccd4a47b210ca833b603c6132e 100644 (file)
@@ -73,6 +73,7 @@ public:
        std::list<boost::shared_ptr<Font> > get_subtitle_fonts ();
        std::list<ReferencedReelAsset> get_reel_assets ();
        dcp::Size video_container_size () const {
+               boost::mutex::scoped_lock lm (_mutex);
                return _video_container_size;
        }
 
@@ -142,6 +143,12 @@ private:
        void do_emit_video (boost::shared_ptr<PlayerVideo> pv, DCPTime time);
        void emit_audio (boost::shared_ptr<AudioBuffers> data, DCPTime time);
 
+       /** Mutex to protect the whole Player state.  When it's used for the preview we have
+           seek() and pass() called from the Butler thread and lots of other stuff called
+           from the GUI thread.
+       */
+       mutable boost::mutex _mutex;
+
        boost::shared_ptr<const Film> _film;
        boost::shared_ptr<const Playlist> _playlist;