]> source.dussan.org Git - tigervnc.git/commitdiff
Allow removal of GUI prompt on fatal errors
authorDr. David Alan Gilbert <dgilbert@redhat.com>
Tue, 11 Jul 2017 11:11:50 +0000 (12:11 +0100)
committerPierre Ossman <ossman@cendio.se>
Wed, 19 Jul 2017 09:13:00 +0000 (11:13 +0200)
Add a new parameter 'alertOnFatalError' which guards
the displaying of the GUI alert on fatal errors, and
thus when false just gives the textual error.

Now I can do:

  while true
  do
    vncviewer alertOnFatalError=false vm:0
    sleep 1
  done

and it'll reappear when my VM appears without me getting error
dialogs.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
--

vncviewer/CConn.cxx
vncviewer/parameters.cxx
vncviewer/parameters.h
vncviewer/vncviewer.cxx
vncviewer/vncviewer.man

index addc30dfbf431f15d55de446477c043920e14d1c..2e97ec281987e06c1605b06d740eb65d94604bc0 100644 (file)
@@ -110,7 +110,8 @@ CConn::CConn(const char* vncServerName, network::Socket* socket=NULL)
       vlog.info(_("connected to host %s port %d"), serverHost, serverPort);
     } catch (rdr::Exception& e) {
       vlog.error("%s", e.str());
-      fl_alert("%s", e.str());
+      if (alertOnFatalError)
+        fl_alert("%s", e.str());
       exit_vncviewer();
       return;
     }
index ad82f27c5186aee61170dfedbd844c0120741e00..9385b986da864c1d210496277628367726fd3fb2 100644 (file)
@@ -59,6 +59,10 @@ BoolParameter dotWhenNoCursor("DotWhenNoCursor",
                               "Show the dot cursor when the server sends an "
                               "invisible cursor", false);
 
+BoolParameter alertOnFatalError("AlertOnFatalError",
+                                "Give a dialog on connection problems rather "
+                                "than exiting immediately", true);
+
 StringParameter passwordFile("PasswordFile",
                              "Password file for VNC authentication", "");
 AliasParameter passwd("passwd", "Alias for PasswordFile", &passwordFile);
@@ -174,7 +178,8 @@ static VoidParameter* parameterArray[] = {
   &sendPrimary,
 #endif
   &menuKey,
-  &fullscreenSystemKeys
+  &fullscreenSystemKeys,
+  &alertOnFatalError
 };
 
 // Encoding Table
index 682b6d698a36350fb3dd9c179471a1b76d02146b..9ce56b9727ed924b67cdd9f875fbfca1b5bfc734 100644 (file)
@@ -60,6 +60,7 @@ extern rfb::BoolParameter sendPrimary;
 extern rfb::StringParameter menuKey;
 
 extern rfb::BoolParameter fullscreenSystemKeys;
+extern rfb::BoolParameter alertOnFatalError;
 
 #ifndef WIN32
 extern rfb::StringParameter via;
index de2b423ec10d3a8845ef3488fa308700d5ea18de..0ca46af4c07f5572aec5b94ba4e60c144b8844ca 100644 (file)
@@ -494,7 +494,9 @@ int main(int argc, char** argv)
     defaultServerName = loadViewerParameters(NULL);
   } catch (rfb::Exception& e) {
     defaultServerName = "";
-    fl_alert("%s", e.str());
+    vlog.error("%s", e.str());
+    if (alertOnFatalError)
+      fl_alert("%s", e.str());
   }
   
   int i = 1;
@@ -532,7 +534,8 @@ int main(int argc, char** argv)
     // TRANSLATORS: "Parameters" are command line arguments, or settings
     // from a file or the Windows registry.
     vlog.error(_("Parameters -listen and -via are incompatible"));
-    fl_alert(_("Parameters -listen and -via are incompatible"));
+    if (alertOnFatalError)
+      fl_alert(_("Parameters -listen and -via are incompatible"));
     exit_vncviewer();
     return 1;
   }
@@ -580,7 +583,8 @@ int main(int argc, char** argv)
       }
     } catch (rdr::Exception& e) {
       vlog.error("%s", e.str());
-      fl_alert("%s", e.str());
+      if (alertOnFatalError)
+        fl_alert("%s", e.str());
       exit_vncviewer();
       return 1; 
     }
@@ -609,7 +613,7 @@ int main(int argc, char** argv)
 
   delete cc;
 
-  if (exitError != NULL)
+  if (exitError != NULL && alertOnFatalError)
     fl_alert("%s", exitError);
 
   return 0;
index b1450d13f7fbd2a1d165802f5f6b0c6e4eca23b8..e48a0c4325b16cdb00e1325c6bc7897644a3df35 100644 (file)
@@ -275,6 +275,10 @@ command is executed with the environment variables \fIL\fR, \fIH\fR,
 \fIR\fR, and \fIG\fR taken the values of the local port number, the remote
 host, the port number on the remote host, and the gateway machine
 respectively.
+.
+.TP
+.B \-AlertOnFatalError
+Display a dialog with any fatal error before exiting. Default is on.
 
 .SH FILES
 .TP