1
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
3
* Copyright (C) 2007 William Jon McCann <mccann@jhu.edu>
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 2 of the License, or
8
* (at your option) any later version.
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28
#include <sys/types.h>
37
#include <glib/gi18n.h>
38
#include <glib-object.h>
40
#include "gdm-welcome-session.h"
41
#include "gdm-greeter-session.h"
43
#define GDM_GREETER_SERVER_DBUS_PATH "/org/gnome/DisplayManager/GreeterServer"
44
#define GDM_GREETER_SERVER_DBUS_INTERFACE "org.gnome.DisplayManager.GreeterServer"
46
#define GDM_GREETER_SESSION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_GREETER_SESSION, GdmGreeterSessionPrivate))
48
struct GdmGreeterSessionPrivate
57
static void gdm_greeter_session_class_init (GdmGreeterSessionClass *klass);
58
static void gdm_greeter_session_init (GdmGreeterSession *greeter_session);
59
static void gdm_greeter_session_finalize (GObject *object);
61
G_DEFINE_TYPE (GdmGreeterSession, gdm_greeter_session, GDM_TYPE_WELCOME_SESSION)
64
gdm_greeter_session_set_property (GObject *object,
71
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
77
gdm_greeter_session_get_property (GObject *object,
84
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
90
gdm_greeter_session_constructor (GType type,
91
guint n_construct_properties,
92
GObjectConstructParam *construct_properties)
94
GdmGreeterSession *greeter_session;
95
GdmGreeterSessionClass *klass;
97
klass = GDM_GREETER_SESSION_CLASS (g_type_class_peek (GDM_TYPE_GREETER_SESSION));
99
greeter_session = GDM_GREETER_SESSION (G_OBJECT_CLASS (gdm_greeter_session_parent_class)->constructor (type,
100
n_construct_properties,
101
construct_properties));
103
return G_OBJECT (greeter_session);
107
gdm_greeter_session_class_init (GdmGreeterSessionClass *klass)
109
GObjectClass *object_class = G_OBJECT_CLASS (klass);
111
object_class->get_property = gdm_greeter_session_get_property;
112
object_class->set_property = gdm_greeter_session_set_property;
113
object_class->constructor = gdm_greeter_session_constructor;
114
object_class->finalize = gdm_greeter_session_finalize;
116
g_type_class_add_private (klass, sizeof (GdmGreeterSessionPrivate));
120
gdm_greeter_session_init (GdmGreeterSession *greeter_session)
123
greeter_session->priv = GDM_GREETER_SESSION_GET_PRIVATE (greeter_session);
127
gdm_greeter_session_finalize (GObject *object)
129
GdmGreeterSession *greeter_session;
131
g_return_if_fail (object != NULL);
132
g_return_if_fail (GDM_IS_GREETER_SESSION (object));
134
greeter_session = GDM_GREETER_SESSION (object);
136
g_return_if_fail (greeter_session->priv != NULL);
138
G_OBJECT_CLASS (gdm_greeter_session_parent_class)->finalize (object);
142
gdm_greeter_session_new (const char *display_name,
143
const char *display_device,
144
const char *display_hostname,
145
gboolean display_is_local)
149
object = g_object_new (GDM_TYPE_GREETER_SESSION,
150
"command", BINDIR "/gnome-session --autostart="DATADIR"/gdm/autostart/LoginWindow/",
151
"server-dbus-path", GDM_GREETER_SERVER_DBUS_PATH,
152
"server-dbus-interface", GDM_GREETER_SERVER_DBUS_INTERFACE,
153
"server-env-var-name", "GDM_GREETER_DBUS_ADDRESS",
154
"register-ck-session", TRUE,
155
"x11-display-name", display_name,
156
"x11-display-device", display_device,
157
"x11-display-hostname", display_hostname,
158
"x11-display-is-local", display_is_local,
159
"runtime-dir", GDM_SCREENSHOT_DIR,
162
return GDM_GREETER_SESSION (object);