diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2011-09-16 14:27:03 +1000 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2011-09-16 14:27:03 +1000 |
commit | 2cdef8c372ecad6413662cf093f320b68e7ef7a8 (patch) | |
tree | 9c2082d45423e39c62376da8c271eef5848c7045 /src/seat-xvnc.c | |
parent | c9c8993ab2d2358bfc527440d0afdf04e44b6a07 (diff) | |
download | lightdm-git-2cdef8c372ecad6413662cf093f320b68e7ef7a8.tar.gz |
move script code into the correct layers so seat.c and display.c no longer depend on X server knowledge
Diffstat (limited to 'src/seat-xvnc.c')
-rw-r--r-- | src/seat-xvnc.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/seat-xvnc.c b/src/seat-xvnc.c index db1ae66f..d1e16965 100644 --- a/src/seat-xvnc.c +++ b/src/seat-xvnc.c @@ -63,6 +63,30 @@ seat_xvnc_create_session (Seat *seat, Display *display) } static void +seat_xvnc_run_script (Seat *seat, Display *display, Process *script) +{ + XServerXVNC *xserver; + GInetSocketAddress *address; + gchar *hostname; + gchar *path; + + xserver = XSERVER_XVNC (display_get_display_server (display)); + + address = G_INET_SOCKET_ADDRESS (g_socket_get_remote_address (SEAT_XVNC (seat)->priv->connection, NULL)); + hostname = g_inet_address_to_string (g_inet_socket_address_get_address (address)); + path = xserver_xvnc_get_authority_file_path (xserver); + + process_set_env (script, "REMOTE_HOST", hostname); + process_set_env (script, "DISPLAY", xserver_get_address (XSERVER (xserver))); + process_set_env (script, "XAUTHORITY", path); + + g_free (hostname); + g_free (path); + + SEAT_CLASS (seat_xvnc_parent_class)->run_script (seat, display, script); +} + +static void seat_xvnc_display_removed (Seat *seat, Display *display) { seat_stop (seat); @@ -94,6 +118,7 @@ seat_xvnc_class_init (SeatXVNCClass *klass) seat_class->create_display_server = seat_xvnc_create_display_server; seat_class->create_session = seat_xvnc_create_session; + seat_class->run_script = seat_xvnc_run_script; seat_class->display_removed = seat_xvnc_display_removed; object_class->finalize = seat_xdmcp_session_finalize; |