diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-11-17 18:13:36 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-01-08 21:56:47 +0100 |
| commit | 046d84f45621f7e128cb30160a315f98881c6f4b (patch) | |
| tree | b93ced9155c89f1562550bfb49b900018a51c7ca /src/wx/video_view.h | |
| parent | 805487369e57e5eb57911805ba6de78b653d79ad (diff) | |
A little thread safety.
Diffstat (limited to 'src/wx/video_view.h')
| -rw-r--r-- | src/wx/video_view.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/wx/video_view.h b/src/wx/video_view.h index d6e76ada7..d9ef2a65f 100644 --- a/src/wx/video_view.h +++ b/src/wx/video_view.h @@ -24,6 +24,7 @@ #include "lib/dcpomatic_time.h" #include <boost/shared_ptr.hpp> #include <boost/signals2.hpp> +#include <boost/thread.hpp> class Image; class wxWindow; @@ -48,6 +49,8 @@ public: /* XXX_b: make pure */ virtual void start () {} + /* XXX_b: make pure */ + virtual void stop () {} void clear (); @@ -59,23 +62,42 @@ public: virtual void display_player_video () {} dcpomatic::DCPTime position () const { + boost::mutex::scoped_lock lm (_mutex); return _player_video.second; } + void set_film (boost::shared_ptr<const Film> film) { + boost::mutex::scoped_lock lm (_mutex); + _film = film; + } + protected: /* XXX_b: to remove */ friend class FilmViewer; bool get_next_frame (bool non_blocking); + int time_until_next_frame () const; + dcpomatic::DCPTime one_video_frame () const; + + boost::shared_ptr<const Film> film () const { + boost::mutex::scoped_lock lm (_mutex); + return _film; + } FilmViewer* _viewer; std::pair<boost::shared_ptr<PlayerVideo>, dcpomatic::DCPTime> _player_video; + /** Mutex protecting all the state in VideoView */ + mutable boost::mutex _mutex; + #ifdef DCPOMATIC_VARIANT_SWAROOP bool _in_watermark; int _watermark_x; int _watermark_y; #endif + +private: + boost::shared_ptr<const Film> _film; }; #endif |
