File gdm-launch-environment-explicitly-kill-worker-on-stop-ev.patch of Package gdm.16051

From 98e7f1e683b635dbaf2679583e040001c93d40ec Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Wed, 14 May 2014 09:29:18 -0400
Subject: [PATCH] launch-environment: explicitly kill worker on stop even if
 session is running

Right now, if the launch environment is stopped while it's running the
whole process group of the session is killed. The theory is that doing
this will kill both the worker and the dbus-daemon (and anything else).

The problem is, now that gdm-simple-slave is gone, the worker is not part
of the same process group as its children, so killing the process group
of the session leaves the worker alive.

This commit makes sure the worker is always explicitly killed.

https://bugzilla.gnome.org/show_bug.cgi?id=729727
---
 daemon/gdm-launch-environment.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

Index: gdm-3.10.0.1/daemon/gdm-launch-environment.c
===================================================================
--- gdm-3.10.0.1.orig/daemon/gdm-launch-environment.c
+++ gdm-3.10.0.1/daemon/gdm-launch-environment.c
@@ -534,17 +534,17 @@ gdm_launch_environment_stop (GdmLaunchEn
 {
         if (launch_environment->priv->pid > 1) {
                 gdm_signal_pid (-launch_environment->priv->pid, SIGTERM);
-        } else {
-                if (launch_environment->priv->session != NULL) {
-                        gdm_session_stop_conversation (launch_environment->priv->session, "gdm-launch-environment");
-                        gdm_session_close (launch_environment->priv->session);
+        }
 
-                        g_clear_object (&launch_environment->priv->session);
-                }
+        if (launch_environment->priv->session != NULL) {
+                gdm_session_stop_conversation (launch_environment->priv->session, "gdm-launch-environment");
+                gdm_session_close (launch_environment->priv->session);
 
-                g_signal_emit (G_OBJECT (launch_environment), signals [STOPPED], 0);
+                g_clear_object (&launch_environment->priv->session);
         }
 
+        g_signal_emit (G_OBJECT (launch_environment), signals [STOPPED], 0);
+
         return TRUE;
 }