]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - src/display-server.c
Load all users only when really needed
[sojka/lightdm.git] / src / display-server.c
index 336a6eed3bbc5ba8734b6fbc5833e59d69d01756..cc319c8d87000da6c0bda2dc1e32bbc85eaf1685 100644 (file)
@@ -22,8 +22,8 @@ static guint signals[LAST_SIGNAL] = { 0 };
 
 struct DisplayServerPrivate
 {
-    /* Unique name for this display server */
-    gchar *name;
+    /* TRUE when started */
+    gboolean is_ready;
 
     /* TRUE when being stopped */
     gboolean stopping;
@@ -35,33 +35,31 @@ struct DisplayServerPrivate
 static void display_server_logger_iface_init (LoggerInterface *iface);
 
 G_DEFINE_TYPE_WITH_CODE (DisplayServer, display_server, G_TYPE_OBJECT,
-                         G_IMPLEMENT_INTERFACE (
-                             LOGGER_TYPE, display_server_logger_iface_init));
+                         G_IMPLEMENT_INTERFACE (LOGGER_TYPE, display_server_logger_iface_init));
 
-void
-display_server_set_name (DisplayServer *server, const gchar *name)
+const gchar *
+display_server_get_session_type (DisplayServer *server)
 {
-    g_return_if_fail (server != NULL);
-    g_free (server->priv->name);
-    server->priv->name = g_strdup (name);
+    return DISPLAY_SERVER_GET_CLASS (server)->get_session_type (server);
 }
 
-const gchar *
-display_server_get_name (DisplayServer *server)
+DisplayServer *
+display_server_get_parent (DisplayServer *server)
 {
     g_return_val_if_fail (server != NULL, NULL);
-    return server->priv->name;
+    return DISPLAY_SERVER_GET_CLASS (server)->get_parent (server);
 }
 
-const gchar *
-display_server_get_session_type (DisplayServer *server)
+static DisplayServer *
+display_server_real_get_parent (DisplayServer *server)
 {
-    return DISPLAY_SERVER_GET_CLASS (server)->get_session_type (server);
+    return NULL;
 }
 
 gboolean
 display_server_get_can_share (DisplayServer *server)
 {
+    g_return_val_if_fail (server != NULL, FALSE);
     return DISPLAY_SERVER_GET_CLASS (server)->get_can_share (server);
 }
 
@@ -91,9 +89,17 @@ display_server_start (DisplayServer *server)
     return DISPLAY_SERVER_GET_CLASS (server)->start (server);
 }
 
+gboolean
+display_server_get_is_ready (DisplayServer *server)
+{
+    g_return_val_if_fail (server != NULL, FALSE);
+    return server->priv->is_ready;
+}
+
 static gboolean
 display_server_real_start (DisplayServer *server)
 {
+    server->priv->is_ready = TRUE;
     g_signal_emit (server, signals[READY], 0);
     return TRUE;
 }
@@ -151,30 +157,16 @@ display_server_init (DisplayServer *server)
     server->priv = G_TYPE_INSTANCE_GET_PRIVATE (server, DISPLAY_SERVER_TYPE, DisplayServerPrivate);
 }
 
-static void
-display_server_finalize (GObject *object)
-{
-    DisplayServer *self;
-
-    self = DISPLAY_SERVER (object);
-
-    g_free (self->priv->name);
-
-    G_OBJECT_CLASS (display_server_parent_class)->finalize (object);
-}
-
 static void
 display_server_class_init (DisplayServerClass *klass)
 {
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
+    klass->get_parent = display_server_real_get_parent;  
     klass->get_can_share = display_server_real_get_can_share;
     klass->get_vt = display_server_real_get_vt;
     klass->start = display_server_real_start;
     klass->connect_session = display_server_real_connect_session;
     klass->disconnect_session = display_server_real_disconnect_session;
     klass->stop = display_server_real_stop;
-    object_class->finalize = display_server_finalize;
 
     g_type_class_add_private (klass, sizeof (DisplayServerPrivate));
 
@@ -199,12 +191,7 @@ display_server_class_init (DisplayServerClass *klass)
 static gint
 display_server_real_logprefix (Logger *self, gchar *buf, gulong buflen)
 {
-    DisplayServer *server = DISPLAY_SERVER (self);
-    const gchar *name = display_server_get_name (server);
-    if (name)
-        return g_snprintf (buf, buflen, "DisplayServer %s: ", name);
-    else
-        return g_snprintf (buf, buflen, "DisplayServer: ");
+    return g_snprintf (buf, buflen, "DisplayServer: ");
 }
 
 static void