Blame SOURCES/0001-fail-whale-handle-X-server-dying-before-startup.patch

5d36d8
From ec58cbbc612992e2de70cbbb858bbbb25cac6aff Mon Sep 17 00:00:00 2001
5d36d8
From: Ray Strode <rstrode@redhat.com>
5d36d8
Date: Tue, 30 May 2017 12:46:19 -0400
5d36d8
Subject: [PATCH] fail-whale: handle X server dying before startup
5d36d8
5d36d8
This commit deals with gtk_init_with_args failing,
5d36d8
without setting an error (which it does if it can't
5d36d8
connect to the X server).
5d36d8
---
5d36d8
 gnome-session/gsm-fail-whale-dialog.c | 21 ++++++++++++++-------
5d36d8
 1 file changed, 14 insertions(+), 7 deletions(-)
5d36d8
5d36d8
diff --git a/gnome-session/gsm-fail-whale-dialog.c b/gnome-session/gsm-fail-whale-dialog.c
5d36d8
index f53ce417..c5889efc 100644
5d36d8
--- a/gnome-session/gsm-fail-whale-dialog.c
5d36d8
+++ b/gnome-session/gsm-fail-whale-dialog.c
5d36d8
@@ -344,55 +344,62 @@ setup_window (GsmFailWhaleDialog *fail_dialog)
5d36d8
                                   G_CALLBACK (on_logout_clicked), fail_dialog);
5d36d8
         }
5d36d8
 }
5d36d8
 
5d36d8
 static void
5d36d8
 gsm_fail_whale_dialog_init (GsmFailWhaleDialog *fail_dialog)
5d36d8
 {
5d36d8
         fail_dialog->priv = GSM_FAIL_WHALE_DIALOG_GET_PRIVATE (fail_dialog);
5d36d8
 }
5d36d8
 
5d36d8
 static gboolean debug_mode = FALSE;
5d36d8
 static gboolean allow_logout = FALSE;
5d36d8
 static gboolean extensions = FALSE;
5d36d8
 
5d36d8
 int main (int argc, char *argv[])
5d36d8
 {
5d36d8
         GOptionEntry entries[] = {
5d36d8
                  { "debug", 0, 0, G_OPTION_ARG_NONE, &debug_mode, N_("Enable debugging code"), NULL },
5d36d8
                  { "allow-logout", 0, 0, G_OPTION_ARG_NONE, &allow_logout, N_("Allow logout"), NULL },
5d36d8
                  { "extensions", 0, 0, G_OPTION_ARG_NONE, &extensions, N_("Show extension warning"), NULL },
5d36d8
                 { NULL, 0, 0, 0, NULL, NULL, NULL }
5d36d8
         };
5d36d8
 
5d36d8
         GsmFailWhaleDialog        *fail_dialog;
5d36d8
         GError *error = NULL;
5d36d8
 
5d36d8
         bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);
5d36d8
         bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
5d36d8
         textdomain (GETTEXT_PACKAGE);
5d36d8
 
5d36d8
-        gtk_init_with_args (&argc, &argv, " - fail whale",
5d36d8
-                            entries, GETTEXT_PACKAGE,
5d36d8
-                            &error);
5d36d8
-         if (error != NULL) {
5d36d8
-                 g_warning ("%s", error->message);
5d36d8
-                 exit (1);
5d36d8
-         }
5d36d8
+        if (!gtk_init_with_args (&argc, &argv, " - fail whale",
5d36d8
+                                 entries, GETTEXT_PACKAGE,
5d36d8
+                                 &error)) {
5d36d8
+            if (error != NULL) {
5d36d8
+                g_warning ("%s", error->message);
5d36d8
+                exit (1);
5d36d8
+            }
5d36d8
+
5d36d8
+            /* display server probably went away. Could be for legitimate reasons, could be for
5d36d8
+             * unexpected reasons.  If it went away unexpectantly, that's logged elsewhere, so
5d36d8
+             * let's not add noise by logging here.
5d36d8
+             */
5d36d8
+            return 0;
5d36d8
+        }
5d36d8
 
5d36d8
         fail_dialog = g_object_new (GSM_TYPE_FAIL_WHALE_DIALOG, NULL);
5d36d8
         fail_dialog->priv->debug_mode = debug_mode;
5d36d8
         fail_dialog->priv->allow_logout = allow_logout;
5d36d8
         fail_dialog->priv->extensions = extensions;
5d36d8
 
5d36d8
         setup_window (fail_dialog);
5d36d8
 
5d36d8
         g_signal_connect (fail_dialog, "destroy",
5d36d8
                           G_CALLBACK (gtk_main_quit), NULL);
5d36d8
 
5d36d8
         gtk_widget_show (GTK_WIDGET (fail_dialog));
5d36d8
 
5d36d8
         gtk_main ();
5d36d8
 
5d36d8
         return 0;
5d36d8
 }
5d36d8
 
5d36d8
-- 
5d36d8
2.13.0
5d36d8