/* IO channel listening on for messages from the compositor */
GIOChannel *from_compositor_channel;
+ guint from_compositor_watch;
/* TRUE when the compositor indicates it is ready */
gboolean compositor_ready;
seat_unity_start (Seat *seat)
{
const gchar *compositor_command;
- gchar *command, *absolute_command, *dir;
+ gchar *command, *absolute_command, *dir, *value;
gboolean result;
int timeout;
/* Listen for messages from the compositor */
SEAT_UNITY (seat)->priv->from_compositor_channel = g_io_channel_unix_new (SEAT_UNITY (seat)->priv->from_compositor_pipe[0]);
- g_io_add_watch (SEAT_UNITY (seat)->priv->from_compositor_channel, G_IO_IN | G_IO_HUP, read_cb, seat);
+ SEAT_UNITY (seat)->priv->from_compositor_watch = g_io_add_watch (SEAT_UNITY (seat)->priv->from_compositor_channel, G_IO_IN | G_IO_HUP, read_cb, seat);
/* Setup logging */
dir = config_get_string (config_get_instance (), "LightDM", "log-directory");
l_debug (seat, "Logging to %s", SEAT_UNITY (seat)->priv->log_file);
g_free (dir);
+ /* Setup environment */
+ process_set_clear_environment (SEAT_UNITY (seat)->priv->compositor_process, TRUE);
+ process_set_env (SEAT_UNITY (seat)->priv->compositor_process, "XDG_SEAT", "seat0");
+ value = g_strdup_printf ("%d", SEAT_UNITY (seat)->priv->vt);
+ process_set_env (SEAT_UNITY (seat)->priv->compositor_process, "XDG_VTNR", value);
+ g_free (value);
+ /* Variable required for regression tests */
+ if (g_getenv ("LIGHTDM_TEST_ROOT"))
+ {
+ process_set_env (SEAT_UNITY (seat)->priv->compositor_process, "LIGHTDM_TEST_ROOT", g_getenv ("LIGHTDM_TEST_ROOT"));
+ process_set_env (SEAT_UNITY (seat)->priv->compositor_process, "LD_PRELOAD", g_getenv ("LD_PRELOAD"));
+ process_set_env (SEAT_UNITY (seat)->priv->compositor_process, "LD_LIBRARY_PATH", g_getenv ("LD_LIBRARY_PATH"));
+ }
+
SEAT_UNITY (seat)->priv->mir_socket_filename = g_strdup ("/tmp/mir_socket"); // FIXME: Use this socket by default as XMir is hardcoded to this
timeout = seat_get_integer_property (seat, "unity-compositor-timeout");
compositor_command = seat_get_string_property (seat, "unity-compositor-command");
close (seat->priv->from_compositor_pipe[0]);
close (seat->priv->from_compositor_pipe[1]);
g_io_channel_unref (seat->priv->from_compositor_channel);
+ g_source_remove (seat->priv->from_compositor_watch);
g_free (seat->priv->read_buffer);
g_object_unref (seat->priv->compositor_process);
if (seat->priv->active_session)