X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fvideo_view.h;h=d7d60c21da14b4e933af418a8ea79ad223fdc574;hb=f56739ec2414f211539974b17435a790445e22cd;hp=3b596197e42c82bca0bbeab977752a51f2f9ba37;hpb=dd9be86db6cde0afa5da0d1d1ac43b42e05dca26;p=dcpomatic.git diff --git a/src/wx/video_view.h b/src/wx/video_view.h index 3b596197e..d7d60c21d 100644 --- a/src/wx/video_view.h +++ b/src/wx/video_view.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2019 Carl Hetherington + Copyright (C) 2019-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,16 +18,19 @@ */ + #ifndef DCPOMATIC_VIDEO_VIEW_H #define DCPOMATIC_VIDEO_VIEW_H + #include "lib/dcpomatic_time.h" +#include "lib/exception_store.h" +#include "lib/signaller.h" #include "lib/timer.h" #include "lib/types.h" -#include "lib/exception_store.h" #include #include -#include + class Image; class wxWindow; @@ -35,12 +38,16 @@ class FilmViewer; class Player; class PlayerVideo; -class VideoView : public ExceptionStore, public boost::noncopyable + +class VideoView : public ExceptionStore, public Signaller { public: VideoView (FilmViewer* viewer); virtual ~VideoView () {} + VideoView (VideoView const&) = delete; + VideoView& operator= (VideoView const&) = delete; + /** @return the thing displaying the image */ virtual wxWindow* get () const = 0; /** Re-make and display the image from the current _player_video */ @@ -64,6 +71,8 @@ public: /** Emitted from the GUI thread when our display changes in size */ boost::signals2::signal Sized; + /** Emitted from the GUI thread when a lot of frames are being dropped */ + boost::signals2::signal TooManyDropped; /* Accessors for FilmViewer */ @@ -137,10 +146,7 @@ protected: return _player_video; } - void add_dropped () { - boost::mutex::scoped_lock lm (_mutex); - ++_dropped; - } + void add_dropped (); void add_get () { boost::mutex::scoped_lock lm (_mutex); @@ -156,15 +162,17 @@ private: mutable boost::mutex _mutex; std::pair, dcpomatic::DCPTime> _player_video; - int _video_frame_rate; + int _video_frame_rate = 0; /** length of the film we are playing, or 0 if there is none */ dcpomatic::DCPTime _length; - Eyes _eyes; - bool _three_d; + Eyes _eyes = Eyes::LEFT; + bool _three_d = false; - int _dropped; - int _errored; - int _gets; + int _dropped = 0; + struct timeval _dropped_check_period_start; + int _errored = 0; + int _gets = 0; }; + #endif