swaroop: required monitors checks.
[dcpomatic.git] / src / tools / dcpomatic_player.cc
index 1742f654051cfedb76d4d296458657be45519d77..5bc9ace36fe6deb4e7fc5cf9747448a18d5d177d 100644 (file)
@@ -47,6 +47,7 @@
 #include "lib/server.h"
 #include "lib/dcpomatic_socket.h"
 #include "lib/scoped_temporary.h"
+#include "lib/monitor_checker.h"
 #include <dcp/dcp.h>
 #include <wx/wx.h>
 #include <wx/stdpaths.h>
@@ -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;
                }