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