X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Ftools%2Fdcpomatic_player.cc;h=cc6e294ff6e0b2108a8e454b8ca3c72f00685001;hb=4042290c541734f529979ed45c19b0623a1d99c2;hp=1742f654051cfedb76d4d296458657be45519d77;hpb=cee15a64c0a4dff457d6743fc07af014faddd09e;p=dcpomatic.git diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc index 1742f6540..cc6e294ff 100644 --- a/src/tools/dcpomatic_player.cc +++ b/src/tools/dcpomatic_player.cc @@ -47,6 +47,7 @@ #include "lib/server.h" #include "lib/dcpomatic_socket.h" #include "lib/scoped_temporary.h" +#include "lib/monitor_checker.h" #include #include #include @@ -195,10 +196,21 @@ public: UpdateChecker::instance()->StateChanged.connect (boost::bind (&DOMFrame::update_checker_state_changed, this)); _controls->SPLChanged.connect (boost::bind(&DOMFrame::set_spl, this, _1)); - +#ifdef DCPOMATIC_VARIANT_SWAROOP + MonitorChecker::instance()->StateChanged.connect(boost::bind(&DOMFrame::monitor_checker_state_changed, this)); + MonitorChecker::instance()->run (); +#endif setup_screen (); } + void monitor_checker_state_changed () + { + if (!MonitorChecker::instance()->ok()) { + error_dialog (this, _("The required display devices are not connected correctly.")); + _viewer->stop (); + } + } + void setup_main_sizer (Config::PlayerMode mode) { wxSizer* main_sizer = new wxBoxSizer (wxVERTICAL); @@ -213,6 +225,12 @@ public: bool playback_permitted () { +#ifdef DCPOMATIC_VARIANT_SWAROOP + if (!MonitorChecker::instance()->ok()) { + error_dialog (this, _("The required display devices are not connected correctly.")); + return false; + } +#endif if (!_film || !Config::instance()->respect_kdm_validity_periods()) { return true; } @@ -365,7 +383,8 @@ public: /* Start off as Flat */ _film->set_container (Ratio::from_id("185")); - DCPTime position; + /* Put 1 frame of black at the start so when we seek to 0 we don't see anything */ + DCPTime position = DCPTime::from_frames(1, _film->video_frame_rate()); shared_ptr first; BOOST_FOREACH (SPLEntry i, spl) {