|
|
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 |
|