source: proiecte/PPPP/gdm/daemon/gdm-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: 22.3 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 <glib.h>
24#include <glib/gi18n.h>
25#include <glib-object.h>
26
27#include "gdm-session.h"
28#include "gdm-session-private.h"
29
30enum {
31        OPENED = 0,
32        SETUP_COMPLETE,
33        SETUP_FAILED,
34        RESET_COMPLETE,
35        RESET_FAILED,
36        AUTHENTICATED,
37        AUTHENTICATION_FAILED,
38        AUTHORIZED,
39        AUTHORIZATION_FAILED,
40        ACCREDITED,
41        ACCREDITATION_FAILED,
42        CLOSED,
43        INFO,
44        PROBLEM,
45        INFO_QUERY,
46        SECRET_INFO_QUERY,
47        SESSION_STARTED,
48        SESSION_START_FAILED,
49        SESSION_EXITED,
50        SESSION_DIED,
51        SELECTED_USER_CHANGED,
52        DEFAULT_LANGUAGE_NAME_CHANGED,
53        DEFAULT_LAYOUT_NAME_CHANGED,
54        DEFAULT_SESSION_NAME_CHANGED,
55        LAST_SIGNAL
56};
57
58static guint signals [LAST_SIGNAL] = { 0, };
59
60static void gdm_session_class_init (gpointer g_iface);
61
62GType
63gdm_session_get_type (void)
64{
65        static GType session_type = 0;
66
67        if (!session_type) {
68                session_type = g_type_register_static_simple (G_TYPE_INTERFACE,
69                                                              "GdmSession",
70                                                              sizeof (GdmSessionIface),
71                                                              (GClassInitFunc) gdm_session_class_init,
72                                                              0, NULL, 0);
73
74                g_type_interface_add_prerequisite (session_type, G_TYPE_OBJECT);
75        }
76
77        return session_type;
78}
79
80void
81gdm_session_open (GdmSession *session)
82{
83        g_return_if_fail (GDM_IS_SESSION (session));
84
85        GDM_SESSION_GET_IFACE (session)->open (session);
86}
87
88void
89gdm_session_close (GdmSession *session)
90{
91        g_return_if_fail (GDM_IS_SESSION (session));
92
93        GDM_SESSION_GET_IFACE (session)->close (session);
94}
95
96void
97gdm_session_setup (GdmSession *session,
98                   const char *service_name)
99{
100        g_return_if_fail (GDM_IS_SESSION (session));
101
102        GDM_SESSION_GET_IFACE (session)->setup (session, service_name);
103}
104
105void
106gdm_session_setup_for_user (GdmSession *session,
107                            const char *service_name,
108                            const char *username)
109{
110        g_return_if_fail (GDM_IS_SESSION (session));
111
112        GDM_SESSION_GET_IFACE (session)->setup_for_user (session, service_name, username);
113}
114
115void
116gdm_session_authenticate (GdmSession *session)
117{
118        g_return_if_fail (GDM_IS_SESSION (session));
119
120        GDM_SESSION_GET_IFACE (session)->authenticate (session);
121}
122
123void
124gdm_session_authorize (GdmSession *session)
125{
126        g_return_if_fail (GDM_IS_SESSION (session));
127
128        GDM_SESSION_GET_IFACE (session)->authorize (session);
129}
130
131void
132gdm_session_accredit (GdmSession *session,
133                      int         flag)
134{
135        g_return_if_fail (GDM_IS_SESSION (session));
136
137        GDM_SESSION_GET_IFACE (session)->accredit (session, flag);
138}
139
140void
141gdm_session_answer_query (GdmSession *session,
142                          const char *text)
143{
144        g_return_if_fail (GDM_IS_SESSION (session));
145
146        GDM_SESSION_GET_IFACE (session)->answer_query (session, text);
147}
148
149void
150gdm_session_select_session (GdmSession *session,
151                            const char *text)
152{
153        g_return_if_fail (GDM_IS_SESSION (session));
154
155        GDM_SESSION_GET_IFACE (session)->select_session (session, text);
156}
157
158void
159gdm_session_select_language (GdmSession *session,
160                             const char *text)
161{
162        g_return_if_fail (GDM_IS_SESSION (session));
163
164        GDM_SESSION_GET_IFACE (session)->select_language (session, text);
165}
166
167void
168gdm_session_select_layout (GdmSession *session,
169                           const char *text)
170{
171        g_return_if_fail (GDM_IS_SESSION (session));
172
173        GDM_SESSION_GET_IFACE (session)->select_layout (session, text);
174}
175
176void
177gdm_session_select_user (GdmSession *session,
178                         const char *text)
179{
180        g_return_if_fail (GDM_IS_SESSION (session));
181
182        GDM_SESSION_GET_IFACE (session)->select_user (session, text);
183}
184
185void
186gdm_session_cancel (GdmSession *session)
187{
188        g_return_if_fail (GDM_IS_SESSION (session));
189
190        GDM_SESSION_GET_IFACE (session)->cancel (session);
191}
192
193void
194gdm_session_start_session (GdmSession *session)
195{
196        g_return_if_fail (GDM_IS_SESSION (session));
197
198        GDM_SESSION_GET_IFACE (session)->start_session (session);
199}
200
201static void
202gdm_session_class_init (gpointer g_iface)
203{
204        GType iface_type = G_TYPE_FROM_INTERFACE (g_iface);
205
206        signals [OPENED] =
207                g_signal_new ("opened",
208                              iface_type,
209                              G_SIGNAL_RUN_FIRST,
210                              G_STRUCT_OFFSET (GdmSessionIface, opened),
211                              NULL,
212                              NULL,
213                              g_cclosure_marshal_VOID__VOID,
214                              G_TYPE_NONE,
215                              0);
216        signals [SETUP_COMPLETE] =
217                g_signal_new ("setup-complete",
218                              iface_type,
219                              G_SIGNAL_RUN_FIRST,
220                              G_STRUCT_OFFSET (GdmSessionIface, setup_complete),
221                              NULL,
222                              NULL,
223                              g_cclosure_marshal_VOID__VOID,
224                              G_TYPE_NONE,
225                              0);
226        signals [SETUP_FAILED] =
227                g_signal_new ("setup-failed",
228                              iface_type,
229                              G_SIGNAL_RUN_FIRST,
230                              G_STRUCT_OFFSET (GdmSessionIface, setup_failed),
231                              NULL,
232                              NULL,
233                              g_cclosure_marshal_VOID__STRING,
234                              G_TYPE_NONE,
235                              1,
236                              G_TYPE_STRING);
237        signals [RESET_COMPLETE] =
238                g_signal_new ("reset-complete",
239                              iface_type,
240                              G_SIGNAL_RUN_FIRST,
241                              G_STRUCT_OFFSET (GdmSessionIface, reset_complete),
242                              NULL,
243                              NULL,
244                              g_cclosure_marshal_VOID__VOID,
245                              G_TYPE_NONE,
246                              0);
247        signals [RESET_FAILED] =
248                g_signal_new ("reset-failed",
249                              iface_type,
250                              G_SIGNAL_RUN_FIRST,
251                              G_STRUCT_OFFSET (GdmSessionIface, reset_failed),
252                              NULL,
253                              NULL,
254                              g_cclosure_marshal_VOID__STRING,
255                              G_TYPE_NONE,
256                              1,
257                              G_TYPE_STRING);
258        signals [AUTHENTICATED] =
259                g_signal_new ("authenticated",
260                              iface_type,
261                              G_SIGNAL_RUN_FIRST,
262                              G_STRUCT_OFFSET (GdmSessionIface, authenticated),
263                              NULL,
264                              NULL,
265                              g_cclosure_marshal_VOID__VOID,
266                              G_TYPE_NONE,
267                              0);
268        signals [AUTHENTICATION_FAILED] =
269                g_signal_new ("authentication-failed",
270                              iface_type,
271                              G_SIGNAL_RUN_FIRST,
272                              G_STRUCT_OFFSET (GdmSessionIface, authentication_failed),
273                              NULL,
274                              NULL,
275                              g_cclosure_marshal_VOID__STRING,
276                              G_TYPE_NONE,
277                              1,
278                              G_TYPE_STRING);
279        signals [AUTHORIZED] =
280                g_signal_new ("authorized",
281                              iface_type,
282                              G_SIGNAL_RUN_FIRST,
283                              G_STRUCT_OFFSET (GdmSessionIface, authorized),
284                              NULL,
285                              NULL,
286                              g_cclosure_marshal_VOID__VOID,
287                              G_TYPE_NONE,
288                              0);
289        signals [AUTHORIZATION_FAILED] =
290                g_signal_new ("authorization-failed",
291                              iface_type,
292                              G_SIGNAL_RUN_FIRST,
293                              G_STRUCT_OFFSET (GdmSessionIface, authorization_failed),
294                              NULL,
295                              NULL,
296                              g_cclosure_marshal_VOID__STRING,
297                              G_TYPE_NONE,
298                              1,
299                              G_TYPE_STRING);
300        signals [ACCREDITED] =
301                g_signal_new ("accredited",
302                              iface_type,
303                              G_SIGNAL_RUN_FIRST,
304                              G_STRUCT_OFFSET (GdmSessionIface, accredited),
305                              NULL,
306                              NULL,
307                              g_cclosure_marshal_VOID__VOID,
308                              G_TYPE_NONE,
309                              0);
310        signals [ACCREDITATION_FAILED] =
311                g_signal_new ("accreditation-failed",
312                              iface_type,
313                              G_SIGNAL_RUN_FIRST,
314                              G_STRUCT_OFFSET (GdmSessionIface, accreditation_failed),
315                              NULL,
316                              NULL,
317                              g_cclosure_marshal_VOID__STRING,
318                              G_TYPE_NONE,
319                              1,
320                              G_TYPE_STRING);
321
322         signals [INFO_QUERY] =
323                g_signal_new ("info-query",
324                              iface_type,
325                              G_SIGNAL_RUN_FIRST,
326                              G_STRUCT_OFFSET (GdmSessionIface, info_query),
327                              NULL,
328                              NULL,
329                              g_cclosure_marshal_VOID__STRING,
330                              G_TYPE_NONE,
331                              1,
332                              G_TYPE_STRING);
333        signals [SECRET_INFO_QUERY] =
334                g_signal_new ("secret-info-query",
335                              iface_type,
336                              G_SIGNAL_RUN_FIRST,
337                              G_STRUCT_OFFSET (GdmSessionIface, secret_info_query),
338                              NULL,
339                              NULL,
340                              g_cclosure_marshal_VOID__STRING,
341                              G_TYPE_NONE,
342                              1,
343                              G_TYPE_STRING);
344        signals [INFO] =
345                g_signal_new ("info",
346                              iface_type,
347                              G_SIGNAL_RUN_FIRST,
348                              G_STRUCT_OFFSET (GdmSessionIface, info),
349                              NULL,
350                              NULL,
351                              g_cclosure_marshal_VOID__STRING,
352                              G_TYPE_NONE,
353                              1,
354                              G_TYPE_STRING);
355        signals [PROBLEM] =
356                g_signal_new ("problem",
357                              iface_type,
358                              G_SIGNAL_RUN_FIRST,
359                              G_STRUCT_OFFSET (GdmSessionIface, problem),
360                              NULL,
361                              NULL,
362                              g_cclosure_marshal_VOID__STRING,
363                              G_TYPE_NONE,
364                              1,
365                              G_TYPE_STRING);
366        signals [SESSION_STARTED] =
367                g_signal_new ("session-started",
368                              iface_type,
369                              G_SIGNAL_RUN_FIRST,
370                              G_STRUCT_OFFSET (GdmSessionIface, session_started),
371                              NULL,
372                              NULL,
373                              g_cclosure_marshal_VOID__INT,
374                              G_TYPE_NONE,
375                              1,
376                              G_TYPE_INT);
377        signals [SESSION_START_FAILED] =
378                g_signal_new ("session-start-failed",
379                              iface_type,
380                              G_SIGNAL_RUN_FIRST,
381                              G_STRUCT_OFFSET (GdmSessionIface, session_start_failed),
382                              NULL,
383                              NULL,
384                              g_cclosure_marshal_VOID__STRING,
385                              G_TYPE_NONE,
386                              1,
387                              G_TYPE_STRING);
388        signals [SESSION_EXITED] =
389                g_signal_new ("session-exited",
390                              iface_type,
391                              G_SIGNAL_RUN_FIRST,
392                              G_STRUCT_OFFSET (GdmSessionIface, session_exited),
393                              NULL,
394                              NULL,
395                              g_cclosure_marshal_VOID__INT,
396                              G_TYPE_NONE,
397                              1,
398                              G_TYPE_INT);
399        signals [SESSION_DIED] =
400                g_signal_new ("session-died",
401                              iface_type,
402                              G_SIGNAL_RUN_FIRST,
403                              G_STRUCT_OFFSET (GdmSessionIface, session_died),
404                              NULL,
405                              NULL,
406                              g_cclosure_marshal_VOID__INT,
407                              G_TYPE_NONE,
408                              1,
409                              G_TYPE_INT);
410        signals [CLOSED] =
411                g_signal_new ("closed",
412                              iface_type,
413                              G_SIGNAL_RUN_FIRST,
414                              G_STRUCT_OFFSET (GdmSessionIface, closed),
415                              NULL,
416                              NULL,
417                              g_cclosure_marshal_VOID__VOID,
418                              G_TYPE_NONE,
419                              0);
420        signals [SELECTED_USER_CHANGED] =
421                g_signal_new ("selected-user-changed",
422                              iface_type,
423                              G_SIGNAL_RUN_FIRST,
424                              G_STRUCT_OFFSET (GdmSessionIface, selected_user_changed),
425                              NULL,
426                              NULL,
427                              g_cclosure_marshal_VOID__STRING,
428                              G_TYPE_NONE,
429                              1,
430                              G_TYPE_STRING);
431        signals [DEFAULT_LANGUAGE_NAME_CHANGED] =
432                g_signal_new ("default-language-name-changed",
433                              iface_type,
434                              G_SIGNAL_RUN_FIRST,
435                              G_STRUCT_OFFSET (GdmSessionIface, default_language_name_changed),
436                              NULL,
437                              NULL,
438                              g_cclosure_marshal_VOID__STRING,
439                              G_TYPE_NONE,
440                              1,
441                              G_TYPE_STRING);
442        signals [DEFAULT_LAYOUT_NAME_CHANGED] =
443                g_signal_new ("default-layout-name-changed",
444                              iface_type,
445                              G_SIGNAL_RUN_FIRST,
446                              G_STRUCT_OFFSET (GdmSessionIface, default_layout_name_changed),
447                              NULL,
448                              NULL,
449                              g_cclosure_marshal_VOID__STRING,
450                              G_TYPE_NONE,
451                              1,
452                              G_TYPE_STRING);
453        signals [DEFAULT_SESSION_NAME_CHANGED] =
454                g_signal_new ("default-session-name-changed",
455                              iface_type,
456                              G_SIGNAL_RUN_FIRST,
457                              G_STRUCT_OFFSET (GdmSessionIface, default_session_name_changed),
458                              NULL,
459                              NULL,
460                              g_cclosure_marshal_VOID__STRING,
461                              G_TYPE_NONE,
462                              1,
463                              G_TYPE_STRING);
464}
465
466void
467_gdm_session_setup_complete (GdmSession   *session)
468{
469        g_return_if_fail (GDM_IS_SESSION (session));
470
471        g_signal_emit (session, signals [SETUP_COMPLETE], 0);
472}
473
474void
475_gdm_session_setup_failed (GdmSession   *session,
476                           const char   *text)
477{
478        g_return_if_fail (GDM_IS_SESSION (session));
479        g_signal_emit (session, signals [SETUP_FAILED], 0, text);
480}
481
482void
483_gdm_session_reset_complete (GdmSession   *session)
484{
485        g_return_if_fail (GDM_IS_SESSION (session));
486
487        g_signal_emit (session, signals [RESET_COMPLETE], 0);
488}
489
490void
491_gdm_session_reset_failed (GdmSession   *session,
492                           const char   *text)
493{
494        g_return_if_fail (GDM_IS_SESSION (session));
495        g_signal_emit (session, signals [RESET_FAILED], 0, text);
496}
497
498void
499_gdm_session_authenticated (GdmSession   *session)
500{
501        g_return_if_fail (GDM_IS_SESSION (session));
502
503        g_signal_emit (session, signals [AUTHENTICATED], 0);
504}
505
506void
507_gdm_session_authentication_failed (GdmSession   *session,
508                                    const char   *text)
509{
510        g_return_if_fail (GDM_IS_SESSION (session));
511        g_signal_emit (session, signals [AUTHENTICATION_FAILED], 0, text);
512}
513
514void
515_gdm_session_authorized (GdmSession   *session)
516{
517        g_return_if_fail (GDM_IS_SESSION (session));
518
519        g_signal_emit (session, signals [AUTHORIZED], 0);
520}
521
522void
523_gdm_session_authorization_failed (GdmSession   *session,
524                                   const char   *text)
525{
526        g_return_if_fail (GDM_IS_SESSION (session));
527        g_signal_emit (session, signals [AUTHORIZATION_FAILED], 0, text);
528}
529
530void
531_gdm_session_accredited (GdmSession   *session)
532{
533        g_return_if_fail (GDM_IS_SESSION (session));
534
535        g_signal_emit (session, signals [ACCREDITED], 0);
536}
537
538void
539_gdm_session_accreditation_failed (GdmSession   *session,
540                                   const char   *text)
541{
542        g_return_if_fail (GDM_IS_SESSION (session));
543        g_signal_emit (session, signals [ACCREDITATION_FAILED], 0, text);
544}
545
546void
547_gdm_session_info_query (GdmSession   *session,
548                         const char   *text)
549{
550        g_return_if_fail (GDM_IS_SESSION (session));
551        g_signal_emit (session, signals [INFO_QUERY], 0, text);
552}
553
554void
555_gdm_session_secret_info_query (GdmSession   *session,
556                                const char   *text)
557{
558        g_return_if_fail (GDM_IS_SESSION (session));
559        g_signal_emit (session, signals [SECRET_INFO_QUERY], 0, text);
560}
561
562void
563_gdm_session_info (GdmSession   *session,
564                   const char   *text)
565{
566        g_return_if_fail (GDM_IS_SESSION (session));
567        g_signal_emit (session, signals [INFO], 0, text);
568}
569
570void
571_gdm_session_problem (GdmSession   *session,
572                      const char   *text)
573{
574        g_return_if_fail (GDM_IS_SESSION (session));
575        g_signal_emit (session, signals [PROBLEM], 0, text);
576}
577
578void
579_gdm_session_session_started (GdmSession   *session,
580                              int           pid)
581{
582        g_return_if_fail (GDM_IS_SESSION (session));
583        g_signal_emit (session, signals [SESSION_STARTED], 0, pid);
584}
585
586void
587_gdm_session_session_start_failed (GdmSession   *session,
588                                   const char   *text)
589{
590        g_return_if_fail (GDM_IS_SESSION (session));
591        g_signal_emit (session, signals [SESSION_START_FAILED], 0, text);
592}
593
594void
595_gdm_session_session_exited (GdmSession   *session,
596                             int           exit_code)
597{
598        g_return_if_fail (GDM_IS_SESSION (session));
599        g_signal_emit (session, signals [SESSION_EXITED], 0, exit_code);
600}
601
602void
603_gdm_session_session_died (GdmSession   *session,
604                           int           signal_number)
605{
606        g_return_if_fail (GDM_IS_SESSION (session));
607        g_signal_emit (session, signals [SESSION_DIED], 0, signal_number);
608}
609
610void
611_gdm_session_opened (GdmSession   *session)
612{
613        g_return_if_fail (GDM_IS_SESSION (session));
614        g_signal_emit (session, signals [OPENED], 0);
615}
616
617void
618_gdm_session_closed (GdmSession   *session)
619{
620        g_return_if_fail (GDM_IS_SESSION (session));
621        g_signal_emit (session, signals [CLOSED], 0);
622}
623
624void
625_gdm_session_default_language_name_changed (GdmSession   *session,
626                                            const char   *language_name)
627{
628        g_return_if_fail (GDM_IS_SESSION (session));
629
630        g_signal_emit (session, signals [DEFAULT_LANGUAGE_NAME_CHANGED], 0, language_name);
631}
632
633void
634_gdm_session_default_layout_name_changed (GdmSession   *session,
635                                          const char   *layout_name)
636{
637        g_return_if_fail (GDM_IS_SESSION (session));
638
639        g_signal_emit (session, signals [DEFAULT_LAYOUT_NAME_CHANGED], 0, layout_name);
640}
641
642void
643_gdm_session_default_session_name_changed (GdmSession   *session,
644                                           const char   *session_name)
645{
646        g_return_if_fail (GDM_IS_SESSION (session));
647
648        g_signal_emit (session, signals [DEFAULT_SESSION_NAME_CHANGED], 0, session_name);
649}
650
651void
652_gdm_session_selected_user_changed (GdmSession   *session,
653                                    const char   *text)
654{
655        g_return_if_fail (GDM_IS_SESSION (session));
656        g_signal_emit (session, signals [SELECTED_USER_CHANGED], 0, text);
657}
Note: See TracBrowser for help on using the repository browser.