swaroop: only allow playback if configured lock file is present.
[dcpomatic.git] / src / tools / dcpomatic_player.cc
index db9463fe23b97b360a2fcebaa8a0b25579900ad7..473cc6d8bd7f17e696c5e89d30afd2e070863041 100644 (file)
@@ -48,6 +48,7 @@
 #include "lib/dcpomatic_socket.h"
 #include "lib/scoped_temporary.h"
 #include "lib/monitor_checker.h"
+#include "lib/lock_file_checker.h"
 #include "lib/ffmpeg_content.h"
 #include <dcp/dcp.h>
 #include <dcp/raw_convert.h>
@@ -206,6 +207,8 @@ public:
 #ifdef DCPOMATIC_VARIANT_SWAROOP
                MonitorChecker::instance()->StateChanged.connect(boost::bind(&DOMFrame::monitor_checker_state_changed, this));
                MonitorChecker::instance()->run ();
+               LockFileChecker::instance()->StateChanged.connect(boost::bind(&DOMFrame::lock_checker_state_changed, this));
+               LockFileChecker::instance()->run ();
 #endif
                setup_screen ();
 
@@ -248,8 +251,16 @@ public:
        void monitor_checker_state_changed ()
        {
                if (!MonitorChecker::instance()->ok()) {
+                       _viewer->stop ();
                        error_dialog (this, _("The required display devices are not connected correctly."));
+               }
+       }
+
+       void lock_checker_state_changed ()
+       {
+               if (!LockFileChecker::instance()->ok()) {
                        _viewer->stop ();
+                       error_dialog (this, _("The lock file is not present."));
                }
        }
 #endif
@@ -273,6 +284,10 @@ public:
                        error_dialog (this, _("The required display devices are not connected correctly."));
                        return false;
                }
+               if (!LockFileChecker::instance()->ok()) {
+                       error_dialog (this, _("The lock file is not present."));
+                       return false;
+               }
 #endif
                if (!_film || !Config::instance()->respect_kdm_validity_periods()) {
                        return true;