]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Remove IO watch on greeter destruction
authorRobert Ancell <robert.ancell@canonical.com>
Wed, 13 Jul 2016 04:16:24 +0000 (16:16 +1200)
committerRobert Ancell <robert.ancell@canonical.com>
Wed, 13 Jul 2016 04:16:24 +0000 (16:16 +1200)
liblightdm-gobject/greeter.c

index 9c50a5d3e973e5330b6e974dc39f11ba60907266..291603966fdabe77c5d093b739b5cd11cc88dbd1 100644 (file)
@@ -62,6 +62,7 @@ typedef struct
 
     /* Channel to read from daemon */
     GIOChannel *from_server_channel;
+    guint from_server_watch;
 
     /* Data read from the daemon */
     guint8 *read_buffer;
@@ -444,7 +445,7 @@ connect_to_daemon (LightDMGreeter *greeter, GError **error)
         return FALSE;
     }
 
-    g_io_add_watch (priv->from_server_channel, G_IO_IN, from_server_cb, greeter);
+    priv->from_server_watch = g_io_add_watch (priv->from_server_channel, G_IO_IN, from_server_cb, greeter);
 
     if (!g_io_channel_set_encoding (priv->to_server_channel, NULL, error) ||
         !g_io_channel_set_encoding (priv->from_server_channel, NULL, error))
@@ -1884,6 +1885,9 @@ lightdm_greeter_finalize (GObject *object)
         g_io_channel_unref (priv->to_server_channel);
     if (priv->from_server_channel)
         g_io_channel_unref (priv->from_server_channel);
+    if (priv->from_server_watch)
+        g_source_remove (priv->from_server_watch);
+    priv->from_server_watch = 0;
     g_clear_pointer (&priv->read_buffer, g_free);
     g_list_free_full (priv->responses_received, g_free);
     priv->responses_received = NULL;
@@ -2145,7 +2149,6 @@ request_finalize (GObject *object)
 {
     Request *request = REQUEST (object);
 
-    g_clear_object (&request->greeter);
     g_clear_object (&request->cancellable);
     g_free (request->dir);