[gdm/display-configuration] Wait X socket release before spawn it.



commit a720673cc6dff0677213f21b6e3c8cf2e760379d
Author: Halton Huo <halton huo sun com>
Date:   Fri Nov 27 18:05:56 2009 +0800

    Wait X socket release before spawn it.
    
    Sometimes quit X slowly, adding this to avoid restart
    
    http://defect.opensolaris.org/bz/show_bug.cgi?id=12795

 daemon/gdm-server.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)
---
diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c
index 4268273..6408d04 100644
--- a/daemon/gdm-server.c
+++ b/daemon/gdm-server.c
@@ -602,6 +602,7 @@ gdm_server_spawn (GdmServer  *server,
         GPtrArray       *env;
         gboolean         ret;
         char            *freeme;
+        char            *tmp;
 
         ret = FALSE;
 
@@ -624,6 +625,26 @@ gdm_server_spawn (GdmServer  *server,
                 _exit (SERVER_ABORT);
         }
 
+        /* Sometimes quit X slowly, adding this  to avoid restart session
+           failure */
+        if ((tmp = strstr (server->priv->display_name, ":")) != NULL) {
+                char *socket_file;
+                int   display_num;
+                char *p;
+
+                tmp++;
+                display_num = g_ascii_strtod (tmp, &p);
+
+                socket_file = g_strdup_printf ("/tmp/.X11-unix/X%d",
+                                               display_num);
+                while (1) {
+                        if (!g_file_test (socket_file, G_FILE_TEST_EXISTS))
+                                break;
+                        sleep (1);
+                }
+                g_free (socket_file);
+        }
+
         env = get_server_environment (server);
 
         freeme = g_strjoinv (" ", argv);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]