]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - src/xdmcp-session.c
Load all users only when really needed
[sojka/lightdm.git] / src / xdmcp-session.c
index b51ce8bdcbc9325d3aacc4cdb751a0930557aba7..bb78ac6635cb6067f2b0bb44aaf4843ddfc07f26 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * Copyright (C) 2010 Robert Ancell.
+ * Copyright (C) 2010-2011 Robert Ancell.
  * Author: Robert Ancell <robert.ancell@canonical.com>
- * 
+ *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU General Public License as published by the Free Software
  * Foundation, either version 3 of the License, or (at your option) any later
 #include "xdmcp-session.h"
 #include "xdmcp-session-private.h"
 
-enum {
-    PROP_0,
-    PROP_ID,
-    PROP_MANUFACTURER_DISPLAY_ID
-};
-
 G_DEFINE_TYPE (XDMCPSession, xdmcp_session, G_TYPE_OBJECT);
 
 XDMCPSession *
 xdmcp_session_new (guint16 id)
 {
-    return g_object_new (XDMCP_SESSION_TYPE, "id", id, NULL);
+    XDMCPSession *self = g_object_new (XDMCP_SESSION_TYPE, NULL);
+
+    self->priv->id = id;
+
+    return self;
 }
 
 guint16
 xdmcp_session_get_id (XDMCPSession *session)
 {
+    g_return_val_if_fail (session != NULL, 0);
     return session->priv->id;
 }
 
 const gchar *
 xdmcp_session_get_manufacturer_display_id (XDMCPSession *session)
 {
+    g_return_val_if_fail (session != NULL, NULL);
     return session->priv->manufacturer_display_id;
 }
 
-const GInetAddress *
+GInetAddress *
 xdmcp_session_get_address (XDMCPSession *session)
 {
+    g_return_val_if_fail (session != NULL, NULL);
     return session->priv->address;
 }
 
-const gchar *
-xdmcp_session_get_authorization_name (XDMCPSession *session)
+XAuthority *
+xdmcp_session_get_authority (XDMCPSession *session)
 {
-    return session->priv->authorization_name;
+    g_return_val_if_fail (session != NULL, NULL);
+    return session->priv->authority;
 }
 
 guint16
 xdmcp_session_get_display_number (XDMCPSession *session)
 {
+    g_return_val_if_fail (session != NULL, 0);
     return session->priv->display_number;
 }
 
 const gchar *
 xdmcp_session_get_display_class (XDMCPSession *session)
 {
+    g_return_val_if_fail (session != NULL, NULL);
     return session->priv->display_class;
 }
 
@@ -67,52 +71,20 @@ xdmcp_session_init (XDMCPSession *session)
 {
     session->priv = G_TYPE_INSTANCE_GET_PRIVATE (session, XDMCP_SESSION_TYPE, XDMCPSessionPrivate);
     session->priv->manufacturer_display_id = g_strdup ("");
-    session->priv->authorization_name = g_strdup ("");
     session->priv->display_class = g_strdup ("");
 }
 
 static void
-xdmcp_session_set_property(GObject      *object,
-                           guint         prop_id,
-                           const GValue *value,
-                           GParamSpec   *pspec)
+xdmcp_session_finalize (GObject *object)
 {
-    XDMCPSession *self;
-
-    self = XDMCP_SESSION (object);
-
-    switch (prop_id) {
-    case PROP_ID:
-        self->priv->id = g_value_get_int (value);
-        break;
-    default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-        break;
-    }
-}
+    XDMCPSession *self = XDMCP_SESSION (object);
 
+    g_free (self->priv->manufacturer_display_id);
+    g_clear_object (&self->priv->address);
+    g_clear_object (&self->priv->authority);
+    g_free (self->priv->display_class);
 
-static void
-xdmcp_session_get_property(GObject    *object,
-                           guint       prop_id,
-                           GValue     *value,
-                           GParamSpec *pspec)
-{
-    XDMCPSession *self;
-
-    self = XDMCP_SESSION (object);
-
-    switch (prop_id) {
-    case PROP_ID:
-        g_value_set_int (value, self->priv->id);
-        break;
-    case PROP_MANUFACTURER_DISPLAY_ID:
-        g_value_set_string (value, self->priv->manufacturer_display_id);
-        break;
-    default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-        break;
-    }
+    G_OBJECT_CLASS (xdmcp_session_parent_class)->finalize (object);
 }
 
 static void
@@ -120,23 +92,7 @@ xdmcp_session_class_init (XDMCPSessionClass *klass)
 {
     GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-    object_class->set_property = xdmcp_session_set_property;
-    object_class->get_property = xdmcp_session_get_property;
-
-    g_object_class_install_property (object_class,
-                                     PROP_ID,
-                                     g_param_spec_int ("id",
-                                                       "id",
-                                                       "Session ID",
-                                                       0, G_MAXUINT16, 0,
-                                                       G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-    g_object_class_install_property (object_class,
-                                     PROP_MANUFACTURER_DISPLAY_ID,
-                                     g_param_spec_string ("manufacturer-display-id",
-                                                          "manufacturer-display-id",
-                                                          "Manufacturer Display ID",
-                                                          NULL,
-                                                          G_PARAM_READABLE));
+    object_class->finalize = xdmcp_session_finalize;
 
     g_type_class_add_private (klass, sizeof (XDMCPSessionPrivate));
 }