summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Lebl <jirka@5z.com>2005-01-14 02:07:57 +0000
committerGeorge Lebl <jirka@src.gnome.org>2005-01-14 02:07:57 +0000
commit7fc715cd058ab58ad6ddc32a9da6261e43a33299 (patch)
tree0706cb3a7551447827b4c60cee57a0354131429b
parenta97e30dfe39b6593ead268fb953fc2eca9e84da2 (diff)
downloadgdm-7fc715cd058ab58ad6ddc32a9da6261e43a33299.tar.gz
The moment I want to stop maintaining gdm, I find an annoying bug that I just
have to fix :) George Thu Jan 13 17:59:05 2005 George Lebl <jirka@5z.com> * gui/gdmwm.c: don't init the wm twice if gdm_wm_init is called twice. Fixes the greeter hanging if something went wrong with loading the theme. * gui/greeter/greeter.c: always destroy the dialog widget because sometimes we don't actually exit. Fixes non-fatal error dialogs hanging around.
-rw-r--r--ChangeLog10
-rw-r--r--gui/gdmwm.c4
-rw-r--r--gui/greeter/greeter.c5
3 files changed, 19 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index b15390ce..b11b76a2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Thu Jan 13 17:59:05 2005 George Lebl <jirka@5z.com>
+
+ * gui/gdmwm.c: don't init the wm twice if gdm_wm_init is called
+ twice. Fixes the greeter hanging if something went wrong with
+ loading the theme.
+
+ * gui/greeter/greeter.c: always destroy the dialog widget because
+ sometimes we don't actually exit. Fixes non-fatal error dialogs
+ hanging around.
+
Tue Dec 14 12:23:35 2004 George Lebl <jirka@5z.com>
* daemon/verify-pam.c: fix very unlikely possible leak
diff --git a/gui/gdmwm.c b/gui/gdmwm.c
index 5ea36cef..75252ae3 100644
--- a/gui/gdmwm.c
+++ b/gui/gdmwm.c
@@ -1167,6 +1167,10 @@ gdm_wm_init (Window login_window)
wm_login_window = login_window;
+ if (wm_disp != NULL) {
+ return;
+ }
+
wm_disp = XOpenDisplay (gdk_get_display ());
if (wm_disp == NULL) {
/* EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEK! */
diff --git a/gui/greeter/greeter.c b/gui/greeter/greeter.c
index e8247d91..44b15a52 100644
--- a/gui/greeter/greeter.c
+++ b/gui/greeter/greeter.c
@@ -647,6 +647,7 @@ verify_gdm_version (void)
gdm_common_setup_cursor (GDK_LEFT_PTR);
gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
return EXIT_SUCCESS;
}
@@ -1188,6 +1189,7 @@ main (int argc, char *argv[])
gdm_common_setup_cursor (GDK_LEFT_PTR);
gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
if (DOING_GDM_DEVELOPMENT)
{
@@ -1236,6 +1238,7 @@ main (int argc, char *argv[])
gdm_common_setup_cursor (GDK_LEFT_PTR);
gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
root = NULL;
}
@@ -1272,6 +1275,7 @@ main (int argc, char *argv[])
gdm_common_setup_cursor (GDK_LEFT_PTR);
gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
execl (EXPANDED_BINDIR "/gdmlogin", EXPANDED_BINDIR "/gdmlogin", NULL);
execlp ("gdmlogin", "gdmlogin", NULL);
@@ -1294,6 +1298,7 @@ main (int argc, char *argv[])
gdm_common_setup_cursor (GDK_LEFT_PTR);
gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
_exit (DISPLAY_ABORT);
}