diff options
author | George Lebl <jirka@5z.com> | 2005-01-14 02:07:57 +0000 |
---|---|---|
committer | George Lebl <jirka@src.gnome.org> | 2005-01-14 02:07:57 +0000 |
commit | 7fc715cd058ab58ad6ddc32a9da6261e43a33299 (patch) | |
tree | 0706cb3a7551447827b4c60cee57a0354131429b | |
parent | a97e30dfe39b6593ead268fb953fc2eca9e84da2 (diff) | |
download | gdm-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-- | ChangeLog | 10 | ||||
-rw-r--r-- | gui/gdmwm.c | 4 | ||||
-rw-r--r-- | gui/greeter/greeter.c | 5 |
3 files changed, 19 insertions, 0 deletions
@@ -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); } |