diff options
author | Halton Huo <halton.huo@sun.com> | 2009-09-11 18:48:01 +0800 |
---|---|---|
committer | Halton Huo <halton.huo@sun.com> | 2009-09-11 18:48:01 +0800 |
commit | ac5fc4f2e649c5fa243a031ade4128a0544eb096 (patch) | |
tree | 73b99b8c026dace551f0a4987a95f7b11a72e6a7 /daemon/gdm-session-direct.h | |
parent | 1f20b75ad274d4a339690315caba866a2f3596fe (diff) | |
download | gdm-ac5fc4f2e649c5fa243a031ade4128a0544eb096.tar.gz |
Add display-type property when open a new session from GdmSessionWorker.
Corresponding ConsoleKit multi-seat commit is
6a432264767b3e8383270c349899926ca2d326be
This allow the user session can inherit display-type property from login
window session. It is very useful for dynamic usage like Sunray to get
right sessions list which it only care about. Without this change, the user
session won't have the right display-type property, hence can not
get the right results for specific display-type.
For example:
1) Sunray will create a login window session
$/usr/sbin/ck-seat-tool -a --display-type=Sunray display=:11
2) If we run
$/usr/bin/ck-list-sessions -f session-id,x11-display,display-type
'Session11' ':11' 'Sunray'
'SessionSeat1Local' ':0' 'Local'
3) If user get login, the login session Session11 will be removed,
a new user session Session12 will be created.
Without this commit, Session12 do not display-type
$/usr/bin/ck-list-sessions -f session-id,x11-display,display-type
'Session12' ':11' ''
'SessionSeat1Local' ':0' 'Local'
With this commit, Session12 inherit display-type from Session11,
that is what we want.
$/usr/bin/ck-list-sessions -f session-id,x11-display,display-type
'Session12' ':11' 'Sunray'
'SessionSeat1Local' ':0' 'Local'
The display-type property is typically passed as following sequence:
1) console-kit-daemon init and create a static seat "Seat1" and
create a un-open session "SessionSeat1Local", stay unmanaged status
2) gdm-binary init and send "Manage" for "Seat1"
3) console-kit-daemon go through all un-open sessions for "Seat1", and
send out "OpenSessionRequest" for that session with property display-type.
4) gdm-binary receive "OpenSessionRequest" for given session,
4.1) Create a GdmDisplay with property display-type.
4.2) Spwan a gdm-simple-slave process.
4.3) Create GdmSimpleSlave with property display-type by quering GdmDisplay.
4.4) Create a GdmSessionDirect with property display-type.
4.5) Sqawn gdm-session-worker process, the properties includs display-type
are get from "Setup" or "SetupForUser".
5) When user sucessfully logged in, GdmSessionWorker will create a user
session by call "OpenSessionWithParameters" with property display-type
6) console-kit-daemon remove "OpenSessionWithParameters", then create a new
session "Session1" with property display-type.
Diffstat (limited to 'daemon/gdm-session-direct.h')
-rw-r--r-- | daemon/gdm-session-direct.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/daemon/gdm-session-direct.h b/daemon/gdm-session-direct.h index 284d902f..766aa0a2 100644 --- a/daemon/gdm-session-direct.h +++ b/daemon/gdm-session-direct.h @@ -50,6 +50,7 @@ GType gdm_session_direct_get_type (void); GdmSessionDirect * gdm_session_direct_new (const char *display_id, const char *display_name, + const char *display_type, const char *display_hostname, const char *display_device, const char *display_x11_authority_file, |