summaryrefslogtreecommitdiff
path: root/src/seat-xvnc.c
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2011-09-16 14:27:03 +1000
committerRobert Ancell <robert.ancell@canonical.com>2011-09-16 14:27:03 +1000
commit2cdef8c372ecad6413662cf093f320b68e7ef7a8 (patch)
tree9c2082d45423e39c62376da8c271eef5848c7045 /src/seat-xvnc.c
parentc9c8993ab2d2358bfc527440d0afdf04e44b6a07 (diff)
downloadlightdm-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.c25
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;