]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - src/greeter.c
Use new SET_NEXT_SESSION command for u-s-c to tell it to place a session underneath...
[sojka/lightdm.git] / src / greeter.c
index 2070aaf6fb4f509e1c4e46efd0afdbc2ac9d674a..a1a5039961476f70281c2e209a9a72a6e70ef76e 100644 (file)
@@ -74,6 +74,7 @@ struct GreeterPrivate
     /* Communication channels to communicate with */
     GIOChannel *to_greeter_channel;
     GIOChannel *from_greeter_channel;
+    guint from_greeter_watch;
 };
 
 G_DEFINE_TYPE (Greeter, greeter, SESSION_TYPE);
@@ -862,7 +863,7 @@ greeter_start (Session *session)
     greeter->priv->from_greeter_channel = g_io_channel_unix_new (from_greeter_pipe[0]);
     g_io_channel_set_encoding (greeter->priv->from_greeter_channel, NULL, NULL);
     g_io_channel_set_buffered (greeter->priv->from_greeter_channel, FALSE);
-    g_io_add_watch (greeter->priv->from_greeter_channel, G_IO_IN | G_IO_HUP, read_cb, greeter);
+    greeter->priv->from_greeter_watch = g_io_add_watch (greeter->priv->from_greeter_channel, G_IO_IN | G_IO_HUP, read_cb, greeter);
 
     /* Let the greeter session know how to communicate with the daemon */
     value = g_strdup_printf ("%d", from_greeter_pipe[1]);
@@ -940,6 +941,8 @@ greeter_finalize (GObject *object)
         g_io_channel_unref (self->priv->to_greeter_channel);
     if (self->priv->from_greeter_channel)
         g_io_channel_unref (self->priv->from_greeter_channel);
+    if (self->priv->from_greeter_watch)
+        g_source_remove (self->priv->from_greeter_watch);
 
     G_OBJECT_CLASS (greeter_parent_class)->finalize (object);
 }