Update to 3.19.90
This commit is contained in:
parent
e5eb4b1cb9
commit
d3c159dda4
1
.gitignore
vendored
1
.gitignore
vendored
@ -84,3 +84,4 @@ gdm-2.30.2.tar.bz2
|
|||||||
/gdm-3.19.2.tar.xz
|
/gdm-3.19.2.tar.xz
|
||||||
/gdm-3.19.4.tar.xz
|
/gdm-3.19.4.tar.xz
|
||||||
/gdm-3.19.4.1.tar.xz
|
/gdm-3.19.4.1.tar.xz
|
||||||
|
/gdm-3.19.90.tar.xz
|
||||||
|
@ -1,540 +0,0 @@
|
|||||||
From 0b466395de112bb247ec586e9ef9770c31e74657 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ray Strode <rstrode@redhat.com>
|
|
||||||
Date: Thu, 4 Feb 2016 13:36:06 -0500
|
|
||||||
Subject: [PATCH 1/4] daemon: support dbus user buses with X sessions
|
|
||||||
|
|
||||||
If the dbus user bus was started when the user first
|
|
||||||
logged in, before the session was started, then that
|
|
||||||
dbus daemon won't have DISPLAY and XAUTHORITY in its
|
|
||||||
activation environment.
|
|
||||||
|
|
||||||
This means programs activated from that dbus daemon
|
|
||||||
also won't have DISPLAY and XAUTHORITY in their
|
|
||||||
activation environments.
|
|
||||||
|
|
||||||
This commit changes GDM to explicitly put the two
|
|
||||||
variables in the activation environment via D-Bus,
|
|
||||||
rather than sending them into the bus environment
|
|
||||||
process when launching the bus (since in the case
|
|
||||||
of the user bus, we don't launch it).
|
|
||||||
|
|
||||||
https://bugzilla.gnome.org/show_bug.cgi?id=761568
|
|
||||||
---
|
|
||||||
daemon/gdm-x-session.c | 42 +++++++++++++++++++++++++++++++++++++++---
|
|
||||||
1 file changed, 39 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c
|
|
||||||
index 624f67c..c01cc5e 100644
|
|
||||||
--- a/daemon/gdm-x-session.c
|
|
||||||
+++ b/daemon/gdm-x-session.c
|
|
||||||
@@ -351,144 +351,180 @@ on_bus_finished (GSubprocess *subprocess,
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (g_subprocess_get_if_exited (subprocess)) {
|
|
||||||
int exit_status;
|
|
||||||
|
|
||||||
exit_status = g_subprocess_get_exit_status (subprocess);
|
|
||||||
|
|
||||||
g_debug ("message bus exited with status %d", exit_status);
|
|
||||||
} else {
|
|
||||||
int signal_number;
|
|
||||||
|
|
||||||
signal_number = g_subprocess_get_term_sig (subprocess);
|
|
||||||
g_debug ("message bus was killed with status %d", signal_number);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_clear_object (&state->bus_subprocess);
|
|
||||||
out:
|
|
||||||
g_main_loop_quit (state->main_loop);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
spawn_bus (State *state,
|
|
||||||
GCancellable *cancellable)
|
|
||||||
{
|
|
||||||
GPtrArray *arguments = NULL;
|
|
||||||
GSubprocessLauncher *launcher = NULL;
|
|
||||||
GSubprocess *subprocess = NULL;
|
|
||||||
GInputStream *input_stream = NULL;
|
|
||||||
GDataInputStream *data_stream = NULL;
|
|
||||||
+ GDBusConnection *connection = NULL;
|
|
||||||
+ GVariantBuilder *builder = NULL;
|
|
||||||
+ GVariant *reply = NULL;
|
|
||||||
GError *error = NULL;
|
|
||||||
const char *bus_env = NULL;
|
|
||||||
char *bus_address_fd_string;
|
|
||||||
char *bus_address = NULL;
|
|
||||||
gsize bus_address_size;
|
|
||||||
|
|
||||||
gboolean is_running = FALSE;
|
|
||||||
int ret;
|
|
||||||
int pipe_fds[2];
|
|
||||||
|
|
||||||
g_debug ("Running session message bus");
|
|
||||||
|
|
||||||
bus_env = g_getenv ("DBUS_SESSION_BUS_ADDRESS");
|
|
||||||
if (bus_env != NULL) {
|
|
||||||
g_debug ("session message bus already running, not starting another one");
|
|
||||||
state->bus_address = g_strdup (bus_env);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = g_unix_open_pipe (pipe_fds, FD_CLOEXEC, &error);
|
|
||||||
|
|
||||||
if (!ret) {
|
|
||||||
g_debug ("could not open pipe: %s", error->message);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
arguments = g_ptr_array_new ();
|
|
||||||
launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_NONE);
|
|
||||||
|
|
||||||
- g_subprocess_launcher_setenv (launcher, "DISPLAY", state->display_name, TRUE);
|
|
||||||
- g_subprocess_launcher_setenv (launcher, "XAUTHORITY", state->auth_file, TRUE);
|
|
||||||
-
|
|
||||||
g_subprocess_launcher_take_fd (launcher, pipe_fds[1], BUS_ADDRESS_FILENO);
|
|
||||||
|
|
||||||
bus_address_fd_string = g_strdup_printf ("%d", BUS_ADDRESS_FILENO);
|
|
||||||
|
|
||||||
g_ptr_array_add (arguments, "dbus-daemon");
|
|
||||||
|
|
||||||
g_ptr_array_add (arguments, "--print-address");
|
|
||||||
g_ptr_array_add (arguments, bus_address_fd_string);
|
|
||||||
g_ptr_array_add (arguments, "--session");
|
|
||||||
g_ptr_array_add (arguments, NULL);
|
|
||||||
|
|
||||||
subprocess = g_subprocess_launcher_spawnv (launcher,
|
|
||||||
(const char * const *) arguments->pdata,
|
|
||||||
&error);
|
|
||||||
g_free (bus_address_fd_string);
|
|
||||||
g_clear_object (&launcher);
|
|
||||||
g_ptr_array_free (arguments, TRUE);
|
|
||||||
|
|
||||||
if (subprocess == NULL) {
|
|
||||||
g_debug ("could not start dbus-daemon: %s", error->message);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
input_stream = g_unix_input_stream_new (pipe_fds[0], TRUE);
|
|
||||||
data_stream = g_data_input_stream_new (input_stream);
|
|
||||||
g_clear_object (&input_stream);
|
|
||||||
|
|
||||||
bus_address = g_data_input_stream_read_line (data_stream,
|
|
||||||
&bus_address_size,
|
|
||||||
cancellable,
|
|
||||||
&error);
|
|
||||||
|
|
||||||
if (error != NULL) {
|
|
||||||
g_debug ("could not read address from session message bus: %s", error->message);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bus_address == NULL) {
|
|
||||||
g_debug ("session message bus did not write address");
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
state->bus_address = bus_address;
|
|
||||||
|
|
||||||
state->bus_subprocess = g_object_ref (subprocess);
|
|
||||||
|
|
||||||
g_subprocess_wait_async (state->bus_subprocess,
|
|
||||||
cancellable,
|
|
||||||
(GAsyncReadyCallback)
|
|
||||||
on_bus_finished,
|
|
||||||
state);
|
|
||||||
|
|
||||||
+ connection = g_dbus_connection_new_for_address_sync (state->bus_address,
|
|
||||||
+ G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT |
|
|
||||||
+ G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION,
|
|
||||||
+ NULL,
|
|
||||||
+ cancellable,
|
|
||||||
+ &error);
|
|
||||||
+
|
|
||||||
+ if (connection == NULL) {
|
|
||||||
+ g_debug ("could not open connection to session bus: %s",
|
|
||||||
+ error->message);
|
|
||||||
+ goto out;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{ss}"));
|
|
||||||
+ g_variant_builder_add (&builder, "{ss}", "DISPLAY", state->display_name);
|
|
||||||
+ g_variant_builder_add (&builder, "{ss}", "XAUTHORITY", state->auth_file);
|
|
||||||
+
|
|
||||||
+ reply = g_dbus_connection_call_sync (connection,
|
|
||||||
+ "org.freedesktop.DBus",
|
|
||||||
+ "/org/freedesktop/DBus",
|
|
||||||
+ "org.freedesktop.DBus",
|
|
||||||
+ "UpdateActivationEnvironment",
|
|
||||||
+ g_variant_new ("(@a{ss})",
|
|
||||||
+ g_variant_builder_end (&builder)),
|
|
||||||
+ NULL,
|
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
+ -1, NULL, &error);
|
|
||||||
+
|
|
||||||
+ if (reply == NULL) {
|
|
||||||
+ g_debug ("could not update activation environment: %s", error->message);
|
|
||||||
+ goto out;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_unref (reply);
|
|
||||||
+ g_clear_object (&connection);
|
|
||||||
+
|
|
||||||
is_running = TRUE;
|
|
||||||
out:
|
|
||||||
g_clear_object (&data_stream);
|
|
||||||
g_clear_object (&subprocess);
|
|
||||||
g_clear_object (&launcher);
|
|
||||||
g_clear_error (&error);
|
|
||||||
|
|
||||||
return is_running;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
on_session_finished (GSubprocess *subprocess,
|
|
||||||
GAsyncResult *result,
|
|
||||||
State *state)
|
|
||||||
{
|
|
||||||
gboolean cancelled;
|
|
||||||
|
|
||||||
cancelled = !g_subprocess_wait_finish (subprocess, result, NULL);
|
|
||||||
|
|
||||||
if (cancelled) {
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (g_subprocess_get_if_exited (subprocess)) {
|
|
||||||
int exit_status;
|
|
||||||
|
|
||||||
exit_status = g_subprocess_get_exit_status (subprocess);
|
|
||||||
|
|
||||||
g_debug ("session exited with status %d", exit_status);
|
|
||||||
--
|
|
||||||
2.7.0
|
|
||||||
|
|
||||||
|
|
||||||
From ee14ddb28e0df3f6726b10d1b7fffb898b058738 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ray Strode <rstrode@redhat.com>
|
|
||||||
Date: Fri, 5 Feb 2016 10:42:20 -0500
|
|
||||||
Subject: [PATCH 2/4] gdm-x-session: fix tiny leak in error path
|
|
||||||
|
|
||||||
I wasn't cleaning up the dbus connection in out: so
|
|
||||||
it leaked in an error path.
|
|
||||||
|
|
||||||
Spotted by Michael Catanzaro
|
|
||||||
---
|
|
||||||
daemon/gdm-x-session.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c
|
|
||||||
index c01cc5e..41e4118 100644
|
|
||||||
--- a/daemon/gdm-x-session.c
|
|
||||||
+++ b/daemon/gdm-x-session.c
|
|
||||||
@@ -469,64 +469,64 @@ spawn_bus (State *state,
|
|
||||||
cancellable,
|
|
||||||
&error);
|
|
||||||
|
|
||||||
if (connection == NULL) {
|
|
||||||
g_debug ("could not open connection to session bus: %s",
|
|
||||||
error->message);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{ss}"));
|
|
||||||
g_variant_builder_add (&builder, "{ss}", "DISPLAY", state->display_name);
|
|
||||||
g_variant_builder_add (&builder, "{ss}", "XAUTHORITY", state->auth_file);
|
|
||||||
|
|
||||||
reply = g_dbus_connection_call_sync (connection,
|
|
||||||
"org.freedesktop.DBus",
|
|
||||||
"/org/freedesktop/DBus",
|
|
||||||
"org.freedesktop.DBus",
|
|
||||||
"UpdateActivationEnvironment",
|
|
||||||
g_variant_new ("(@a{ss})",
|
|
||||||
g_variant_builder_end (&builder)),
|
|
||||||
NULL,
|
|
||||||
G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
-1, NULL, &error);
|
|
||||||
|
|
||||||
if (reply == NULL) {
|
|
||||||
g_debug ("could not update activation environment: %s", error->message);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_variant_unref (reply);
|
|
||||||
- g_clear_object (&connection);
|
|
||||||
|
|
||||||
is_running = TRUE;
|
|
||||||
out:
|
|
||||||
+ g_clear_object (&connection);
|
|
||||||
g_clear_object (&data_stream);
|
|
||||||
g_clear_object (&subprocess);
|
|
||||||
g_clear_object (&launcher);
|
|
||||||
g_clear_error (&error);
|
|
||||||
|
|
||||||
return is_running;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
on_session_finished (GSubprocess *subprocess,
|
|
||||||
GAsyncResult *result,
|
|
||||||
State *state)
|
|
||||||
{
|
|
||||||
gboolean cancelled;
|
|
||||||
|
|
||||||
cancelled = !g_subprocess_wait_finish (subprocess, result, NULL);
|
|
||||||
|
|
||||||
if (cancelled) {
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (g_subprocess_get_if_exited (subprocess)) {
|
|
||||||
int exit_status;
|
|
||||||
|
|
||||||
exit_status = g_subprocess_get_exit_status (subprocess);
|
|
||||||
|
|
||||||
g_debug ("session exited with status %d", exit_status);
|
|
||||||
|
|
||||||
state->session_exit_status = exit_status;
|
|
||||||
--
|
|
||||||
2.7.0
|
|
||||||
|
|
||||||
|
|
||||||
From a8982d70e65d13f5c0a65a144d659c65382b04f3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ray Strode <rstrode@redhat.com>
|
|
||||||
Date: Tue, 9 Feb 2016 11:34:30 -0500
|
|
||||||
Subject: [PATCH 3/4] gdm-x-session: fix pointer confusion in
|
|
||||||
UpdateActivationEnv call
|
|
||||||
|
|
||||||
commit 99eeae91c1f11997521ad3bc016a7b2d23ec7942 introduced a
|
|
||||||
call to UpdateActivationEnvironment but mucked up the GVariantBuilder
|
|
||||||
declaration. This commit fixes that.
|
|
||||||
---
|
|
||||||
daemon/gdm-x-session.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c
|
|
||||||
index 41e4118..6957c83 100644
|
|
||||||
--- a/daemon/gdm-x-session.c
|
|
||||||
+++ b/daemon/gdm-x-session.c
|
|
||||||
@@ -352,61 +352,61 @@ on_bus_finished (GSubprocess *subprocess,
|
|
||||||
}
|
|
||||||
|
|
||||||
if (g_subprocess_get_if_exited (subprocess)) {
|
|
||||||
int exit_status;
|
|
||||||
|
|
||||||
exit_status = g_subprocess_get_exit_status (subprocess);
|
|
||||||
|
|
||||||
g_debug ("message bus exited with status %d", exit_status);
|
|
||||||
} else {
|
|
||||||
int signal_number;
|
|
||||||
|
|
||||||
signal_number = g_subprocess_get_term_sig (subprocess);
|
|
||||||
g_debug ("message bus was killed with status %d", signal_number);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_clear_object (&state->bus_subprocess);
|
|
||||||
out:
|
|
||||||
g_main_loop_quit (state->main_loop);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
spawn_bus (State *state,
|
|
||||||
GCancellable *cancellable)
|
|
||||||
{
|
|
||||||
GPtrArray *arguments = NULL;
|
|
||||||
GSubprocessLauncher *launcher = NULL;
|
|
||||||
GSubprocess *subprocess = NULL;
|
|
||||||
GInputStream *input_stream = NULL;
|
|
||||||
GDataInputStream *data_stream = NULL;
|
|
||||||
GDBusConnection *connection = NULL;
|
|
||||||
- GVariantBuilder *builder = NULL;
|
|
||||||
+ GVariantBuilder builder;
|
|
||||||
GVariant *reply = NULL;
|
|
||||||
GError *error = NULL;
|
|
||||||
const char *bus_env = NULL;
|
|
||||||
char *bus_address_fd_string;
|
|
||||||
char *bus_address = NULL;
|
|
||||||
gsize bus_address_size;
|
|
||||||
|
|
||||||
gboolean is_running = FALSE;
|
|
||||||
int ret;
|
|
||||||
int pipe_fds[2];
|
|
||||||
|
|
||||||
g_debug ("Running session message bus");
|
|
||||||
|
|
||||||
bus_env = g_getenv ("DBUS_SESSION_BUS_ADDRESS");
|
|
||||||
if (bus_env != NULL) {
|
|
||||||
g_debug ("session message bus already running, not starting another one");
|
|
||||||
state->bus_address = g_strdup (bus_env);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = g_unix_open_pipe (pipe_fds, FD_CLOEXEC, &error);
|
|
||||||
|
|
||||||
if (!ret) {
|
|
||||||
g_debug ("could not open pipe: %s", error->message);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
arguments = g_ptr_array_new ();
|
|
||||||
launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_NONE);
|
|
||||||
|
|
||||||
--
|
|
||||||
2.7.0
|
|
||||||
|
|
||||||
|
|
||||||
From 1c7fdfad3b47b9e7c27862c5926120235151bd57 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ray Strode <rstrode@redhat.com>
|
|
||||||
Date: Tue, 9 Feb 2016 11:49:02 -0500
|
|
||||||
Subject: [PATCH 4/4] gdm-session: update session type when the session
|
|
||||||
defaults change
|
|
||||||
|
|
||||||
If a user has never logged in before and they login using autologin,
|
|
||||||
then we don't select the correct session type if they end up
|
|
||||||
with a wayland session. This is because we fail to initialize
|
|
||||||
the session type based on the default session type.
|
|
||||||
|
|
||||||
This commit changes the code to update the session type anytime the
|
|
||||||
session defaults are reset.
|
|
||||||
|
|
||||||
https://bugzilla.gnome.org/show_bug.cgi?id=761785
|
|
||||||
---
|
|
||||||
daemon/gdm-session.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
|
|
||||||
index c230dae..b839fea 100644
|
|
||||||
--- a/daemon/gdm-session.c
|
|
||||||
+++ b/daemon/gdm-session.c
|
|
||||||
@@ -581,60 +581,62 @@ get_fallback_session_name (GdmSession *self)
|
|
||||||
strlen (".desktop"));
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
session = g_sequence_iter_next (session);
|
|
||||||
} while (!g_sequence_iter_is_end (session));
|
|
||||||
|
|
||||||
g_free (self->priv->fallback_session_name);
|
|
||||||
self->priv->fallback_session_name = name;
|
|
||||||
|
|
||||||
g_sequence_free (sessions);
|
|
||||||
|
|
||||||
out:
|
|
||||||
return self->priv->fallback_session_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *
|
|
||||||
get_default_session_name (GdmSession *self)
|
|
||||||
{
|
|
||||||
if (self->priv->saved_session != NULL) {
|
|
||||||
return self->priv->saved_session;
|
|
||||||
}
|
|
||||||
|
|
||||||
return get_fallback_session_name (self);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gdm_session_defaults_changed (GdmSession *self)
|
|
||||||
{
|
|
||||||
|
|
||||||
+ update_session_type (self);
|
|
||||||
+
|
|
||||||
if (self->priv->greeter_interface != NULL) {
|
|
||||||
gdm_dbus_greeter_emit_default_language_name_changed (self->priv->greeter_interface,
|
|
||||||
get_default_language_name (self));
|
|
||||||
gdm_dbus_greeter_emit_default_session_name_changed (self->priv->greeter_interface,
|
|
||||||
get_default_session_name (self));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
gdm_session_select_user (GdmSession *self,
|
|
||||||
const char *text)
|
|
||||||
{
|
|
||||||
|
|
||||||
g_debug ("GdmSession: Setting user: '%s'", text);
|
|
||||||
|
|
||||||
g_free (self->priv->selected_user);
|
|
||||||
self->priv->selected_user = g_strdup (text);
|
|
||||||
|
|
||||||
g_free (self->priv->saved_session);
|
|
||||||
self->priv->saved_session = NULL;
|
|
||||||
|
|
||||||
g_free (self->priv->saved_language);
|
|
||||||
self->priv->saved_language = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
cancel_pending_query (GdmSessionConversation *conversation)
|
|
||||||
{
|
|
||||||
if (conversation->pending_invocation == NULL) {
|
|
||||||
return;
|
|
||||||
@@ -893,62 +895,60 @@ worker_on_saved_language_name_read (GdmDBusWorker *worker,
|
|
||||||
{
|
|
||||||
GdmSession *self = conversation->session;
|
|
||||||
|
|
||||||
if (strlen (language_name) > 0 &&
|
|
||||||
strcmp (language_name, get_default_language_name (self)) != 0) {
|
|
||||||
g_free (self->priv->saved_language);
|
|
||||||
self->priv->saved_language = g_strdup (language_name);
|
|
||||||
|
|
||||||
if (self->priv->greeter_interface != NULL) {
|
|
||||||
gdm_dbus_greeter_emit_default_language_name_changed (self->priv->greeter_interface,
|
|
||||||
language_name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
worker_on_saved_session_name_read (GdmDBusWorker *worker,
|
|
||||||
const char *session_name,
|
|
||||||
GdmSessionConversation *conversation)
|
|
||||||
{
|
|
||||||
GdmSession *self = conversation->session;
|
|
||||||
|
|
||||||
if (! get_session_command_for_name (self, session_name, NULL)) {
|
|
||||||
/* ignore sessions that don't exist */
|
|
||||||
g_debug ("GdmSession: not using invalid .dmrc session: %s", session_name);
|
|
||||||
g_free (self->priv->saved_session);
|
|
||||||
self->priv->saved_session = NULL;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
- update_session_type (self);
|
|
||||||
-
|
|
||||||
if (strcmp (session_name,
|
|
||||||
get_default_session_name (self)) != 0) {
|
|
||||||
g_free (self->priv->saved_session);
|
|
||||||
self->priv->saved_session = g_strdup (session_name);
|
|
||||||
|
|
||||||
if (self->priv->greeter_interface != NULL) {
|
|
||||||
gdm_dbus_greeter_emit_default_session_name_changed (self->priv->greeter_interface,
|
|
||||||
session_name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static GdmSessionConversation *
|
|
||||||
find_conversation_by_pid (GdmSession *self,
|
|
||||||
GPid pid)
|
|
||||||
{
|
|
||||||
GHashTableIter iter;
|
|
||||||
gpointer key, value;
|
|
||||||
|
|
||||||
g_hash_table_iter_init (&iter, self->priv->conversations);
|
|
||||||
while (g_hash_table_iter_next (&iter, &key, &value)) {
|
|
||||||
GdmSessionConversation *conversation;
|
|
||||||
|
|
||||||
conversation = (GdmSessionConversation *) value;
|
|
||||||
|
|
||||||
if (conversation->worker_pid == pid) {
|
|
||||||
return conversation;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.7.0
|
|
||||||
|
|
9
gdm.spec
9
gdm.spec
@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
Summary: The GNOME Display Manager
|
Summary: The GNOME Display Manager
|
||||||
Name: gdm
|
Name: gdm
|
||||||
Version: 3.19.4.1
|
Version: 3.19.90
|
||||||
Release: 4%{?dist}
|
Release: 1%{?dist}
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Group: User Interface/X
|
Group: User Interface/X
|
||||||
@ -18,7 +18,6 @@ URL: https://wiki.gnome.org/Projects/GDM
|
|||||||
#VCS: git:git://git.gnome.org/gdm
|
#VCS: git:git://git.gnome.org/gdm
|
||||||
Source: http://download.gnome.org/sources/gdm/3.19/gdm-%{version}.tar.xz
|
Source: http://download.gnome.org/sources/gdm/3.19/gdm-%{version}.tar.xz
|
||||||
Source1: org.gnome.login-screen.gschema.override
|
Source1: org.gnome.login-screen.gschema.override
|
||||||
Patch0: fix-gnome-terminal.patch
|
|
||||||
|
|
||||||
BuildRequires: pam-devel >= 0:%{pam_version}
|
BuildRequires: pam-devel >= 0:%{pam_version}
|
||||||
BuildRequires: desktop-file-utils >= %{desktop_file_utils_version}
|
BuildRequires: desktop-file-utils >= %{desktop_file_utils_version}
|
||||||
@ -103,7 +102,6 @@ files needed to build custom greeters.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch0 -p1 -b .fix-gnome-terminal
|
|
||||||
|
|
||||||
autoreconf -i -f
|
autoreconf -i -f
|
||||||
intltoolize -f
|
intltoolize -f
|
||||||
@ -297,6 +295,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor >&/dev/null || :
|
|||||||
%{_libdir}/pkgconfig/gdm.pc
|
%{_libdir}/pkgconfig/gdm.pc
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Feb 18 2016 Richard Hughes <rhughes@redhat.com> - 1:3.19.90-1
|
||||||
|
- Update to 3.19.90
|
||||||
|
|
||||||
* Tue Feb 09 2016 Ray Strode <rstrode@redhat.com> - 3.19.4.1-4
|
* Tue Feb 09 2016 Ray Strode <rstrode@redhat.com> - 3.19.4.1-4
|
||||||
- More fixes need to get get gnome-terminal, gedit, etc working
|
- More fixes need to get get gnome-terminal, gedit, etc working
|
||||||
Resolves: #1281675
|
Resolves: #1281675
|
||||||
|
Loading…
Reference in New Issue
Block a user