/* Communication channels to communicate with */
GIOChannel *to_greeter_channel;
GIOChannel *from_greeter_channel;
+ guint from_greeter_watch;
};
G_DEFINE_TYPE (Greeter, greeter, SESSION_TYPE);
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]);
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);
}