+ if (!_viewer->playing() || _viewer->position().get() % DCPTime::HZ) {
+ return;
+ }
+
+ FILE* f = fopen_boost (Config::path("position"), "w");
+ if (f) {
+ string const p = dcp::raw_convert<string> (_viewer->position().get());
+ fwrite (p.c_str(), p.length(), 1, f);
+ fclose (f);
+ }
+ }
+
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+ 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
+
+ void setup_main_sizer (Config::PlayerMode mode)
+ {
+ wxSizer* main_sizer = new wxBoxSizer (wxVERTICAL);
+ if (mode != Config::PLAYER_MODE_DUAL) {
+ main_sizer->Add (_viewer->panel(), 1, wxEXPAND | wxALIGN_CENTER_VERTICAL);
+ }
+ main_sizer->Add (_controls, mode == Config::PLAYER_MODE_DUAL ? 1 : 0, wxEXPAND | wxALL, 6);
+ main_sizer->Add (_info, 0, wxEXPAND | wxALL, 6);
+ _overall_panel->SetSizer (main_sizer);
+ _overall_panel->Layout ();