You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
280 lines
13 KiB
280 lines
13 KiB
From 0522f061f30baeecff958e0deee89934baff3776 Mon Sep 17 00:00:00 2001 |
|
From: Ray Strode <rstrode@redhat.com> |
|
Date: Fri, 12 May 2017 10:11:09 -0400 |
|
Subject: [PATCH] Revert "session: forward is-initial from display to worker" |
|
MIME-Version: 1.0 |
|
Content-Type: text/plain; charset=UTF-8 |
|
Content-Transfer-Encoding: 8bit |
|
|
|
This reverts commit 7a4e34049c79e907d1a027390c5d3a8dcdc11977. |
|
|
|
It breaks login screen until reboot on 7.3→7.4 upgrade. |
|
--- |
|
daemon/gdm-session-worker.c | 10 ++-------- |
|
daemon/gdm-session-worker.xml | 3 --- |
|
2 files changed, 2 insertions(+), 11 deletions(-) |
|
|
|
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c |
|
index 34b3bf7f..10ecccb0 100644 |
|
--- a/daemon/gdm-session-worker.c |
|
+++ b/daemon/gdm-session-worker.c |
|
@@ -3033,166 +3033,160 @@ gdm_session_worker_handle_initialize (GdmDBusWorker *object, |
|
|
|
if (worker->priv->username) { |
|
wait_for_settings = !gdm_session_settings_load (worker->priv->user_settings, |
|
worker->priv->username); |
|
} |
|
} |
|
|
|
if (wait_for_settings) { |
|
/* Load settings from accounts daemon before continuing |
|
*/ |
|
g_signal_connect (G_OBJECT (worker->priv->user_settings), |
|
"notify::is-loaded", |
|
G_CALLBACK (on_settings_is_loaded_changed), |
|
worker); |
|
} else { |
|
queue_state_change (worker); |
|
} |
|
|
|
return TRUE; |
|
} |
|
|
|
static gboolean |
|
gdm_session_worker_handle_setup (GdmDBusWorker *object, |
|
GDBusMethodInvocation *invocation, |
|
const char *service, |
|
const char *x11_display_name, |
|
const char *x11_authority_file, |
|
const char *console, |
|
const char *seat_id, |
|
const char *hostname, |
|
- gboolean display_is_local, |
|
- gboolean display_is_initial) |
|
+ gboolean display_is_local) |
|
{ |
|
GdmSessionWorker *worker = GDM_SESSION_WORKER (object); |
|
validate_and_queue_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE); |
|
|
|
worker->priv->service = g_strdup (service); |
|
worker->priv->x11_display_name = g_strdup (x11_display_name); |
|
worker->priv->x11_authority_file = g_strdup (x11_authority_file); |
|
worker->priv->display_device = g_strdup (console); |
|
worker->priv->display_seat_id = g_strdup (seat_id); |
|
worker->priv->hostname = g_strdup (hostname); |
|
worker->priv->display_is_local = display_is_local; |
|
- worker->priv->display_is_initial = display_is_initial; |
|
worker->priv->username = NULL; |
|
|
|
g_signal_connect_swapped (worker->priv->user_settings, |
|
"notify::language-name", |
|
G_CALLBACK (on_saved_language_name_read), |
|
worker); |
|
|
|
g_signal_connect_swapped (worker->priv->user_settings, |
|
"notify::session-name", |
|
G_CALLBACK (on_saved_session_name_read), |
|
worker); |
|
return TRUE; |
|
} |
|
|
|
static gboolean |
|
gdm_session_worker_handle_setup_for_user (GdmDBusWorker *object, |
|
GDBusMethodInvocation *invocation, |
|
const char *service, |
|
const char *username, |
|
const char *x11_display_name, |
|
const char *x11_authority_file, |
|
const char *console, |
|
const char *seat_id, |
|
const char *hostname, |
|
- gboolean display_is_local, |
|
- gboolean display_is_initial) |
|
+ gboolean display_is_local) |
|
{ |
|
GdmSessionWorker *worker = GDM_SESSION_WORKER (object); |
|
|
|
if (!validate_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE)) |
|
return TRUE; |
|
|
|
worker->priv->service = g_strdup (service); |
|
worker->priv->x11_display_name = g_strdup (x11_display_name); |
|
worker->priv->x11_authority_file = g_strdup (x11_authority_file); |
|
worker->priv->display_device = g_strdup (console); |
|
worker->priv->display_seat_id = g_strdup (seat_id); |
|
worker->priv->hostname = g_strdup (hostname); |
|
worker->priv->display_is_local = display_is_local; |
|
- worker->priv->display_is_initial = display_is_initial; |
|
worker->priv->username = g_strdup (username); |
|
|
|
g_signal_connect_swapped (worker->priv->user_settings, |
|
"notify::language-name", |
|
G_CALLBACK (on_saved_language_name_read), |
|
worker); |
|
|
|
g_signal_connect_swapped (worker->priv->user_settings, |
|
"notify::session-name", |
|
G_CALLBACK (on_saved_session_name_read), |
|
worker); |
|
|
|
/* Load settings from accounts daemon before continuing |
|
*/ |
|
worker->priv->pending_invocation = invocation; |
|
if (gdm_session_settings_load (worker->priv->user_settings, username)) { |
|
queue_state_change (worker); |
|
} else { |
|
g_signal_connect (G_OBJECT (worker->priv->user_settings), |
|
"notify::is-loaded", |
|
G_CALLBACK (on_settings_is_loaded_changed), |
|
worker); |
|
} |
|
|
|
return TRUE; |
|
} |
|
|
|
static gboolean |
|
gdm_session_worker_handle_setup_for_program (GdmDBusWorker *object, |
|
GDBusMethodInvocation *invocation, |
|
const char *service, |
|
const char *username, |
|
const char *x11_display_name, |
|
const char *x11_authority_file, |
|
const char *console, |
|
const char *seat_id, |
|
const char *hostname, |
|
gboolean display_is_local, |
|
- gboolean display_is_initial, |
|
const char *log_file) |
|
{ |
|
GdmSessionWorker *worker = GDM_SESSION_WORKER (object); |
|
validate_and_queue_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE); |
|
|
|
worker->priv->service = g_strdup (service); |
|
worker->priv->x11_display_name = g_strdup (x11_display_name); |
|
worker->priv->x11_authority_file = g_strdup (x11_authority_file); |
|
worker->priv->display_device = g_strdup (console); |
|
worker->priv->display_seat_id = g_strdup (seat_id); |
|
worker->priv->hostname = g_strdup (hostname); |
|
worker->priv->display_is_local = display_is_local; |
|
- worker->priv->display_is_initial = display_is_initial; |
|
worker->priv->username = g_strdup (username); |
|
worker->priv->log_file = g_strdup (log_file); |
|
worker->priv->is_program_session = TRUE; |
|
|
|
return TRUE; |
|
} |
|
|
|
static gboolean |
|
gdm_session_worker_handle_start_program (GdmDBusWorker *object, |
|
GDBusMethodInvocation *invocation, |
|
const char *text) |
|
{ |
|
GdmSessionWorker *worker = GDM_SESSION_WORKER (object); |
|
GError *parse_error = NULL; |
|
validate_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SESSION_STARTED); |
|
|
|
if (worker->priv->is_reauth_session) { |
|
g_dbus_method_invocation_return_error (invocation, |
|
GDM_SESSION_WORKER_ERROR, |
|
GDM_SESSION_WORKER_ERROR_IN_REAUTH_SESSION, |
|
"Cannot start a program while in a reauth session"); |
|
return TRUE; |
|
} |
|
|
|
g_debug ("GdmSessionWorker: start program: %s", text); |
|
|
|
g_clear_pointer (&worker->priv->arguments, (GDestroyNotify) g_strfreev); |
|
if (! g_shell_parse_argv (text, NULL, &worker->priv->arguments, &parse_error)) { |
|
g_dbus_method_invocation_take_error (invocation, parse_error); |
|
return TRUE; |
|
diff --git a/daemon/gdm-session-worker.xml b/daemon/gdm-session-worker.xml |
|
index 4280fe09..bc055973 100644 |
|
--- a/daemon/gdm-session-worker.xml |
|
+++ b/daemon/gdm-session-worker.xml |
|
@@ -8,83 +8,80 @@ |
|
<arg name="session_id" direction="out" type="s"/> |
|
</method> |
|
<method name="SetLanguageName"> |
|
<arg name="language" direction="in" type="s"/> |
|
</method> |
|
<method name="SetSessionName"> |
|
<arg name="session_name" direction="in" type="s" /> |
|
</method> |
|
<method name="SetSessionDisplayMode"> |
|
<arg name="mode" direction="in" type="s"/> |
|
</method> |
|
<method name="SetEnvironmentVariable"> |
|
<arg name="name" direction="in" type="s"/> |
|
<arg name="value" direction="in" type="s"/> |
|
</method> |
|
<method name="StartProgram"> |
|
<arg name="command" direction="in" type="s"/> |
|
<arg name="child_pid" direction="out" type="i"/> |
|
</method> |
|
<method name="Initialize"> |
|
<arg name="details" direction="in" type="a{sv}"/> |
|
</method> |
|
<method name="Setup"> |
|
<arg name="service_name" direction="in" type="s"/> |
|
<arg name="x11_display_name" direction="in" type="s"/> |
|
<arg name="x11_authority_file" direction="in" type="s"/> |
|
<arg name="display_device" direction="in" type="s"/> |
|
<arg name="display_seat" direction="in" type="s"/> |
|
<arg name="hostname" direction="in" type="s"/> |
|
<arg name="display_is_local" direction="in" type="b"/> |
|
- <arg name="display_is_initial" direction="in" type="b"/> |
|
</method> |
|
<method name="SetupForUser"> |
|
<arg name="service_name" direction="in" type="s"/> |
|
<arg name="user_name" direction="in" type="s"/> |
|
<arg name="x11_display_name" direction="in" type="s"/> |
|
<arg name="x11_authority_file" direction="in" type="s"/> |
|
<arg name="display_device" direction="in" type="s"/> |
|
<arg name="display_seat" direction="in" type="s"/> |
|
<arg name="hostname" direction="in" type="s"/> |
|
<arg name="display_is_local" direction="in" type="b"/> |
|
- <arg name="display_is_initial" direction="in" type="b"/> |
|
</method> |
|
<method name="SetupForProgram"> |
|
<arg name="service_name" direction="in" type="s"/> |
|
<arg name="user_name" direction="in" type="s"/> |
|
<arg name="x11_display_name" direction="in" type="s"/> |
|
<arg name="x11_authority_file" direction="in" type="s"/> |
|
<arg name="display_device" direction="in" type="s"/> |
|
<arg name="display_seat" direction="in" type="s"/> |
|
<arg name="hostname" direction="in" type="s"/> |
|
<arg name="display_is_local" direction="in" type="b"/> |
|
- <arg name="display_is_initial" direction="in" type="b"/> |
|
<arg name="log_file" direction="in" type="s"/> |
|
</method> |
|
<method name="StartReauthentication"> |
|
<arg name="pid_of_caller" direction="in" type="i"/> |
|
<arg name="uid_of_caller" direction="in" type="i"/> |
|
<arg name="address" direction="out" type="s"/> |
|
</method> |
|
|
|
<signal name="SessionExited"> |
|
<arg name="service_name" type="s" /> |
|
<!-- This is a combination of exit code and exit |
|
signal. Use macros in sys/wait.h to handle it. --> |
|
<arg name="status" type="i" /> |
|
</signal> |
|
<signal name="SavedLanguageNameRead"> |
|
<arg name="language_name" type="s"/> |
|
</signal> |
|
<signal name="SavedSessionNameRead"> |
|
<arg name="session_name" type="s"/> |
|
</signal> |
|
<signal name="UsernameChanged"> |
|
<arg name="new_username" type="s"/> |
|
</signal> |
|
<signal name="Reauthenticated"> |
|
<arg name="service_name" type="s"/> |
|
</signal> |
|
<signal name="CancelPendingQuery"> |
|
</signal> |
|
</interface> |
|
</node> |
|
-- |
|
2.14.2 |
|
|
|
|