source: proiecte/PPPP/gdm/daemon/gdm-greeter-session.c @ 134

Last change on this file since 134 was 134, checked in by (none), 14 years ago

gdm sources with the modifications for webcam

File size: 5.6 KB
Line 
1/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
2 *
3 * Copyright (C) 2007 William Jon McCann <mccann@jhu.edu>
4 *
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.
9 *
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.
14 *
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.
18 *
19 */
20
21#include "config.h"
22
23#include <stdlib.h>
24#include <stdio.h>
25#include <fcntl.h>
26#include <unistd.h>
27#include <string.h>
28#include <sys/types.h>
29#include <sys/wait.h>
30#include <errno.h>
31#include <ctype.h>
32#include <pwd.h>
33#include <grp.h>
34#include <signal.h>
35
36#include <glib.h>
37#include <glib/gi18n.h>
38#include <glib-object.h>
39
40#include "gdm-welcome-session.h"
41#include "gdm-greeter-session.h"
42
43#define GDM_GREETER_SERVER_DBUS_PATH      "/org/gnome/DisplayManager/GreeterServer"
44#define GDM_GREETER_SERVER_DBUS_INTERFACE "org.gnome.DisplayManager.GreeterServer"
45
46#define GDM_GREETER_SESSION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_GREETER_SESSION, GdmGreeterSessionPrivate))
47
48struct GdmGreeterSessionPrivate
49{
50        gpointer dummy;
51};
52
53enum {
54        PROP_0,
55};
56
57static void     gdm_greeter_session_class_init    (GdmGreeterSessionClass *klass);
58static void     gdm_greeter_session_init  (GdmGreeterSession      *greeter_session);
59static void     gdm_greeter_session_finalize      (GObject         *object);
60
61G_DEFINE_TYPE (GdmGreeterSession, gdm_greeter_session, GDM_TYPE_WELCOME_SESSION)
62
63static void
64gdm_greeter_session_set_property (GObject      *object,
65                                  guint         prop_id,
66                                  const GValue *value,
67                                  GParamSpec   *pspec)
68{
69        switch (prop_id) {
70        default:
71                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
72                break;
73        }
74}
75
76static void
77gdm_greeter_session_get_property (GObject    *object,
78                                  guint       prop_id,
79                                  GValue     *value,
80                                  GParamSpec *pspec)
81{
82        switch (prop_id) {
83        default:
84                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
85                break;
86        }
87}
88
89static GObject *
90gdm_greeter_session_constructor (GType                  type,
91                                 guint                  n_construct_properties,
92                                 GObjectConstructParam *construct_properties)
93{
94        GdmGreeterSession      *greeter_session;
95        GdmGreeterSessionClass *klass;
96
97        klass = GDM_GREETER_SESSION_CLASS (g_type_class_peek (GDM_TYPE_GREETER_SESSION));
98
99        greeter_session = GDM_GREETER_SESSION (G_OBJECT_CLASS (gdm_greeter_session_parent_class)->constructor (type,
100                                                                                                               n_construct_properties,
101                                                                                                               construct_properties));
102
103        return G_OBJECT (greeter_session);
104}
105
106static void
107gdm_greeter_session_class_init (GdmGreeterSessionClass *klass)
108{
109        GObjectClass    *object_class = G_OBJECT_CLASS (klass);
110
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;
115
116        g_type_class_add_private (klass, sizeof (GdmGreeterSessionPrivate));
117}
118
119static void
120gdm_greeter_session_init (GdmGreeterSession *greeter_session)
121{
122
123        greeter_session->priv = GDM_GREETER_SESSION_GET_PRIVATE (greeter_session);
124}
125
126static void
127gdm_greeter_session_finalize (GObject *object)
128{
129        GdmGreeterSession *greeter_session;
130
131        g_return_if_fail (object != NULL);
132        g_return_if_fail (GDM_IS_GREETER_SESSION (object));
133
134        greeter_session = GDM_GREETER_SESSION (object);
135
136        g_return_if_fail (greeter_session->priv != NULL);
137
138        G_OBJECT_CLASS (gdm_greeter_session_parent_class)->finalize (object);
139}
140
141GdmGreeterSession *
142gdm_greeter_session_new (const char *display_name,
143                         const char *display_device,
144                         const char *display_hostname,
145                         gboolean    display_is_local)
146{
147        GObject *object;
148
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                               NULL);
160
161        return GDM_GREETER_SESSION (object);
162}
Note: See TracBrowser for help on using the repository browser.