1
## Description: add some description
2
## Origin/Author: add some origin or author
1
4
From 7e4878cea1504420911b7672f81f9221c6e1d65a Mon Sep 17 00:00:00 2001
2
5
From: Robert Ancell <robert.ancell@gmail.com>
3
6
Date: Wed, 13 Jan 2010 16:30:49 +1100
4
7
Subject: [PATCH] Add SwitchToUser() method which automatically selects that user in the greeter or switches to an already open session
5
8
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=606923
7
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-display.c gdm-2.29.4.new/daemon/gdm-display.c
8
--- gdm-2.29.4/daemon/gdm-display.c 2009-12-22 03:36:30.000000000 +1100
9
+++ gdm-2.29.4.new/daemon/gdm-display.c 2010-01-14 13:00:54.886674032 +1100
10
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-display.c gdm-2.30.0.new/daemon/gdm-display.c
11
--- gdm-2.30.0/daemon/gdm-display.c 2010-04-13 15:41:16.724247508 +0800
12
+++ gdm-2.30.0.new/daemon/gdm-display.c 2010-04-13 15:41:18.906768605 +0800
11
14
time_t creation_time;
12
15
GTimer *slave_timer;
94
97
g_param_spec_int ("status",
96
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-greeter-server.c gdm-2.29.4.new/daemon/gdm-greeter-server.c
97
--- gdm-2.29.4/daemon/gdm-greeter-server.c 2009-12-22 03:36:30.000000000 +1100
98
+++ gdm-2.29.4.new/daemon/gdm-greeter-server.c 2010-01-14 13:00:54.886674032 +1100
99
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-greeter-server.c gdm-2.30.0.new/daemon/gdm-greeter-server.c
100
--- gdm-2.30.0/daemon/gdm-greeter-server.c 2010-04-13 15:41:16.724247508 +0800
101
+++ gdm-2.30.0.new/daemon/gdm-greeter-server.c 2010-04-13 15:41:18.916747038 +0800
99
102
@@ -281,6 +281,14 @@
121
124
" <signal name=\"TimedLoginRequested\">\n"
122
125
" <arg name=\"username\" type=\"s\"/>\n"
123
126
" <arg name=\"delay\" type=\"i\"/>\n"
124
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-greeter-server.h gdm-2.29.4.new/daemon/gdm-greeter-server.h
125
--- gdm-2.29.4/daemon/gdm-greeter-server.h 2009-12-09 02:20:18.000000000 +1100
126
+++ gdm-2.29.4.new/daemon/gdm-greeter-server.h 2010-01-14 13:00:54.886674032 +1100
127
@@ -1107,7 +1118,7 @@
130
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
131
- g_object_class_install_property (object_class,
132
+ g_object_class_install_property (object_class,
134
g_param_spec_string ("user-name",
136
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-greeter-server.h gdm-2.30.0.new/daemon/gdm-greeter-server.h
137
--- gdm-2.30.0/daemon/gdm-greeter-server.h 2010-04-13 15:41:16.724247508 +0800
138
+++ gdm-2.30.0.new/daemon/gdm-greeter-server.h 2010-04-13 15:41:18.916747038 +0800
127
139
@@ -95,6 +95,8 @@
128
140
void gdm_greeter_server_default_session_name_changed (GdmGreeterServer *greeter_server,
129
141
const char *text);
133
145
void gdm_greeter_server_request_timed_login (GdmGreeterServer *greeter_server,
134
146
const char *username,
136
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-local-display-factory.c gdm-2.29.4.new/daemon/gdm-local-display-factory.c
137
--- gdm-2.29.4/daemon/gdm-local-display-factory.c 2010-01-14 13:00:54.226667038 +1100
138
+++ gdm-2.29.4.new/daemon/gdm-local-display-factory.c 2010-01-14 13:02:10.804200067 +1100
139
@@ -501,6 +501,121 @@
148
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-local-display-factory.c gdm-2.30.0.new/daemon/gdm-local-display-factory.c
149
--- gdm-2.30.0/daemon/gdm-local-display-factory.c 2010-04-13 15:41:18.224255958 +0800
150
+++ gdm-2.30.0.new/daemon/gdm-local-display-factory.c 2010-04-13 15:41:18.916747038 +0800
151
@@ -495,6 +495,121 @@
259
271
gdm_local_display_factory_create_product_display (GdmLocalDisplayFactory *factory,
260
272
const char *parent_display_id,
261
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-local-display-factory.h gdm-2.29.4.new/daemon/gdm-local-display-factory.h
262
--- gdm-2.29.4/daemon/gdm-local-display-factory.h 2010-01-14 13:00:54.226667038 +1100
263
+++ gdm-2.29.4.new/daemon/gdm-local-display-factory.h 2010-01-14 13:00:54.886674032 +1100
273
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-local-display-factory.h gdm-2.30.0.new/daemon/gdm-local-display-factory.h
274
--- gdm-2.30.0/daemon/gdm-local-display-factory.h 2010-04-13 15:41:18.224255958 +0800
275
+++ gdm-2.30.0.new/daemon/gdm-local-display-factory.h 2010-04-13 15:41:18.916747038 +0800
264
276
@@ -64,6 +64,10 @@
265
277
gboolean gdm_local_display_factory_create_transient_display (GdmLocalDisplayFactory *factory,
273
285
gboolean gdm_local_display_factory_start_guest_session (GdmLocalDisplayFactory *factory,
275
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-local-display-factory.xml gdm-2.29.4.new/daemon/gdm-local-display-factory.xml
276
--- gdm-2.29.4/daemon/gdm-local-display-factory.xml 2010-01-14 13:00:54.226667038 +1100
277
+++ gdm-2.29.4.new/daemon/gdm-local-display-factory.xml 2010-01-14 13:00:54.886674032 +1100
287
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-local-display-factory.xml gdm-2.30.0.new/daemon/gdm-local-display-factory.xml
288
--- gdm-2.30.0/daemon/gdm-local-display-factory.xml 2010-04-13 15:41:18.224255958 +0800
289
+++ gdm-2.30.0.new/daemon/gdm-local-display-factory.xml 2010-04-13 15:41:18.916747038 +0800
278
290
@@ -12,5 +12,9 @@
279
291
<method name="StartGuestSession">
280
292
<arg name="id" direction="out" type="o"/>
288
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-simple-slave.c gdm-2.29.4.new/daemon/gdm-simple-slave.c
289
--- gdm-2.29.4/daemon/gdm-simple-slave.c 2010-01-14 13:00:54.386666699 +1100
290
+++ gdm-2.29.4.new/daemon/gdm-simple-slave.c 2010-01-14 13:00:54.886674032 +1100
300
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-simple-slave.c gdm-2.30.0.new/daemon/gdm-simple-slave.c
301
--- gdm-2.30.0/daemon/gdm-simple-slave.c 2010-04-13 15:41:18.354254949 +0800
302
+++ gdm-2.30.0.new/daemon/gdm-simple-slave.c 2010-04-13 15:41:18.916747038 +0800
291
303
@@ -85,10 +85,13 @@
292
304
guint start_session_when_ready : 1;
293
305
guint waiting_to_start_session : 1;
304
316
static void gdm_simple_slave_class_init (GdmSimpleSlaveClass *klass);
306
g_warning ("Unable to send ready");
321
+gdm_simple_slave_set_username (GdmSimpleSlave *slave,
322
+ const char *username)
324
+ g_return_if_fail (GDM_IS_SIMPLE_SLAVE (slave));
326
+ g_free (slave->priv->username);
327
+ slave->priv->username = g_strdup (username);
331
on_session_conversation_started (GdmSession *session,
332
GdmSimpleSlave *slave)
310
338
+ g_object_get (slave, "username", &username, NULL);
311
339
+ if (username) {
312
340
+ g_debug ("GdmSimpleSlave: **user '%s'", username);
313
341
+ if (slave->priv->greeter_server != NULL) {
314
342
+ g_debug ("GdmSimpleSlave: begin login for user '%s'", username);
343
+ gdm_simple_slave_set_username (slave, NULL);
315
344
+ gdm_greeter_server_select_user (slave->priv->greeter_server, username);
317
346
+ g_free (username);
320
349
+ g_debug ("GdmSimpleSlave: **nouser");
323
352
gdm_slave_get_timed_login_details (GDM_SLAVE (slave), &enabled, &username, &delay);
324
@@ -1272,12 +1287,29 @@
328
+gdm_simple_slave_set_username (GdmSimpleSlave *slave,
329
+ const char *username)
331
+ g_return_if_fail (GDM_IS_SIMPLE_SLAVE (slave));
333
+ g_free (slave->priv->username);
334
+ slave->priv->username = g_strdup (username);
338
gdm_simple_slave_set_property (GObject *object,
354
@@ -1338,7 +1364,14 @@
340
355
const GValue *value,
341
356
GParamSpec *pspec)
398
413
return GDM_SLAVE (object);
399
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/gdm-simple-slave.h gdm-2.29.4.new/daemon/gdm-simple-slave.h
400
--- gdm-2.29.4/daemon/gdm-simple-slave.h 2009-12-09 02:20:18.000000000 +1100
401
+++ gdm-2.29.4.new/daemon/gdm-simple-slave.h 2010-01-14 13:00:54.886674032 +1100
414
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/gdm-simple-slave.h gdm-2.30.0.new/daemon/gdm-simple-slave.h
415
--- gdm-2.30.0/daemon/gdm-simple-slave.h 2010-04-13 15:41:16.724247508 +0800
416
+++ gdm-2.30.0.new/daemon/gdm-simple-slave.h 2010-04-13 15:41:18.916747038 +0800
402
417
@@ -48,7 +48,8 @@
403
418
} GdmSimpleSlaveClass;
412
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/daemon/simple-slave-main.c gdm-2.29.4.new/daemon/simple-slave-main.c
413
--- gdm-2.29.4/daemon/simple-slave-main.c 2010-01-14 13:00:54.186666563 +1100
414
+++ gdm-2.29.4.new/daemon/simple-slave-main.c 2010-01-14 13:00:54.886674032 +1100
427
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/daemon/simple-slave-main.c gdm-2.30.0.new/daemon/simple-slave-main.c
428
--- gdm-2.30.0/daemon/simple-slave-main.c 2010-04-13 15:41:18.194248305 +0800
429
+++ gdm-2.30.0.new/daemon/simple-slave-main.c 2010-04-13 15:41:18.916747038 +0800
415
430
@@ -47,6 +47,7 @@
416
431
#include "gdm-settings-direct.h"
441
456
if (slave == NULL) {
444
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/data/gdm.conf.in gdm-2.29.4.new/data/gdm.conf.in
445
--- gdm-2.29.4/data/gdm.conf.in 2010-01-14 13:00:54.266675125 +1100
446
+++ gdm-2.29.4.new/data/gdm.conf.in 2010-01-14 13:00:54.886674032 +1100
459
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/data/gdm.conf.in gdm-2.30.0.new/data/gdm.conf.in
460
--- gdm-2.30.0/data/gdm.conf.in 2010-04-13 15:41:18.254257675 +0800
461
+++ gdm-2.30.0.new/data/gdm.conf.in 2010-04-13 15:41:18.916747038 +0800
447
462
@@ -74,6 +74,9 @@
448
463
send_member="CreateTransientDisplay"/>
449
464
<allow send_destination="org.gnome.DisplayManager"
454
469
send_member="StartGuestSession"/>
456
471
<allow send_destination="org.gnome.DisplayManager"
457
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/gui/simple-greeter/gdm-greeter-client.c gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-client.c
458
--- gdm-2.29.4/gui/simple-greeter/gdm-greeter-client.c 2009-12-22 03:36:30.000000000 +1100
459
+++ gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-client.c 2010-01-14 13:00:54.886674032 +1100
472
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/gui/simple-greeter/gdm-greeter-client.c gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-client.c
473
--- gdm-2.30.0/gui/simple-greeter/gdm-greeter-client.c 2010-04-13 15:41:16.724247508 +0800
474
+++ gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-client.c 2010-04-13 15:41:18.916747038 +0800
460
475
@@ -69,6 +69,7 @@
461
476
DEFAULT_LANGUAGE_NAME_CHANGED,
462
477
DEFAULT_LAYOUT_NAME_CHANGED,
507
522
gdm_greeter_client_signals[TIMED_LOGIN_REQUESTED] =
508
523
g_signal_new ("timed-login-requested",
509
524
G_OBJECT_CLASS_TYPE (object_class),
510
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/gui/simple-greeter/gdm-greeter-client.h gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-client.h
511
--- gdm-2.29.4/gui/simple-greeter/gdm-greeter-client.h 2009-12-09 02:20:18.000000000 +1100
512
+++ gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-client.h 2010-01-14 13:00:54.886674032 +1100
525
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/gui/simple-greeter/gdm-greeter-client.h gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-client.h
526
--- gdm-2.30.0/gui/simple-greeter/gdm-greeter-client.h 2010-04-13 15:41:16.724247508 +0800
527
+++ gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-client.h 2010-04-13 15:41:18.916747038 +0800
513
528
@@ -66,6 +66,8 @@
514
529
const char *language_name);
515
530
void (* default_layout_name_changed) (GdmGreeterClient *client,
519
534
void (* timed_login_requested) (GdmGreeterClient *client,
520
535
const char *username,
522
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/gui/simple-greeter/gdm-greeter-login-window.c gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-login-window.c
523
--- gdm-2.29.4/gui/simple-greeter/gdm-greeter-login-window.c 2010-01-14 13:00:54.316667091 +1100
524
+++ gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-login-window.c 2010-01-14 13:00:54.886674032 +1100
537
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/gui/simple-greeter/gdm-greeter-login-window.c gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-login-window.c
538
--- gdm-2.30.0/gui/simple-greeter/gdm-greeter-login-window.c 2010-04-13 15:41:18.294248302 +0800
539
+++ gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-login-window.c 2010-04-13 15:41:18.916747038 +0800
527
542
guint login_button_handler_id;
528
543
guint start_session_handler_id;
571
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/gui/simple-greeter/gdm-greeter-login-window.h gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-login-window.h
572
--- gdm-2.29.4/gui/simple-greeter/gdm-greeter-login-window.h 2009-12-09 02:20:18.000000000 +1100
573
+++ gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-login-window.h 2010-01-14 13:00:54.886674032 +1100
586
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/gui/simple-greeter/gdm-greeter-login-window.h gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-login-window.h
587
--- gdm-2.30.0/gui/simple-greeter/gdm-greeter-login-window.h 2010-04-13 15:41:16.734247730 +0800
588
+++ gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-login-window.h 2010-04-13 15:41:18.916747038 +0800
574
589
@@ -76,6 +76,8 @@
575
590
gboolean gdm_greeter_login_window_problem (GdmGreeterLoginWindow *login_window,
576
591
const char *text);
580
595
void gdm_greeter_login_window_request_timed_login (GdmGreeterLoginWindow *login_window,
581
596
const char *username,
583
diff -Nur -x '*.orig' -x '*~' gdm-2.29.4/gui/simple-greeter/gdm-greeter-session.c gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-session.c
584
--- gdm-2.29.4/gui/simple-greeter/gdm-greeter-session.c 2010-01-14 13:00:54.176672276 +1100
585
+++ gdm-2.29.4.new/gui/simple-greeter/gdm-greeter-session.c 2010-01-14 13:00:54.886674032 +1100
598
diff -Nur -x '*.orig' -x '*~' gdm-2.30.0/gui/simple-greeter/gdm-greeter-session.c gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-session.c
599
--- gdm-2.30.0/gui/simple-greeter/gdm-greeter-session.c 2010-04-13 15:41:18.184247662 +0800
600
+++ gdm-2.30.0.new/gui/simple-greeter/gdm-greeter-session.c 2010-04-13 15:41:18.916747038 +0800
586
601
@@ -153,6 +153,15 @@