Open a dialogue if pinging the back-end fails on macOS. v2.15.146
authorCarl Hetherington <cth@carlh.net>
Mon, 10 May 2021 13:12:23 +0000 (15:12 +0200)
committerCarl Hetherington <cth@carlh.net>
Mon, 10 May 2021 21:35:53 +0000 (23:35 +0200)
At least this means the user will get another go without losing
their setup.  My only theory at this point is that sometimes the
backend takes a crazy amount of time to start up because of some
SIP / gatekeeper type nonsense (#1990).

src/tools/dcpomatic_disk.cc

index 3daffb72d0b94d7d8b0c1b340f4d1359bcaa2c3f..67705ffcb65d941d97f2960bfdf337b28da19cb9 100644 (file)
@@ -250,8 +250,8 @@ private:
                DCPOMATIC_ASSERT (static_cast<bool>(_dcp_path));
 
                auto ping = [this](int attempt) {
-                       if (_nanomsg.send(DISK_WRITER_PING "\n", 2000)) {
-                               auto reply = _nanomsg.receive (2000);
+                       if (_nanomsg.send(DISK_WRITER_PING "\n", 1000)) {
+                               auto reply = _nanomsg.receive (1000);
                                if (reply && *reply == DISK_WRITER_PONG) {
                                        return true;
                                } else if (reply) {
@@ -262,6 +262,7 @@ private:
                        } else {
                                LOG_DISK("Could not send ping to writer (attempt %1)", attempt);
                        }
+                       dcpomatic_sleep_seconds (1);
                        return false;
                };
 
@@ -274,7 +275,7 @@ private:
                }
 
                if (!have_writer) {
-#ifdef DCPOMATIC_WINDOWS
+#if defined(DCPOMATIC_WINDOWS)
                        auto m = new MessageDialog (
                                this,
                                _("DCP-o-matic Disk Writer"),
@@ -283,6 +284,15 @@ private:
                        m->ShowModal ();
                        m->Destroy ();
                        return;
+#elif defined(DCPOMATIC_OSX)
+                       auto m = new MessageDialog (
+                               this,
+                               _("DCP-o-matic Disk Writer"),
+                               _("Did you install the DCP-o-matic Disk Writer.pkg from the .dmg?  Please check and try again.")
+                               );
+                       m->ShowModal ();
+                       m->Destroy ();
+                       return;
 #else
                        LOG_DISK_NC ("Failed to ping writer");
                        throw CommunicationFailedError ();