X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=video_widget.h;h=c0f28d75ec7ad8ff99e14e245e49e51054385a93;hb=9e95c15a6754fa571199c36d73ac2dc1d45e5c64;hp=dc7d0ab7b3f834285b1da2feabd3a2e06417a927;hpb=5ccdfdea87f84fcc4d6c981a88dacd1127ab7106;p=pkanalytics diff --git a/video_widget.h b/video_widget.h index dc7d0ab..c0f28d7 100644 --- a/video_widget.h +++ b/video_widget.h @@ -25,7 +25,7 @@ public: VideoWidget(QWidget *parent); ~VideoWidget() { stop(); } - void open(const std::string &filename); + bool open(const std::string &filename); // False on error. void play(); uint64_t get_position() const { return last_position; } // In milliseconds. void pause(); @@ -77,7 +77,8 @@ private: int64_t pts_origin; int64_t last_pts; std::atomic last_position{0}; // TODO: sort of redundant wrt. last_pts (but this one can be read from the other thread) - std::atomic running{false}; + enum RunState { NOT_RUNNING, STARTING, RUNNING, VIDEO_FILE_ERROR }; // NOT_RUNNING and VIDEO_FILE_ERROR both imply that the thread isn't running and can freely be restarted. + std::atomic running{NOT_RUNNING}; bool paused = false; std::chrono::steady_clock::time_point start, next_frame_start, last_frame;