]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - liblightdm-gobject/greeter.c
Revert r2392 - it seems to have broken ABI in liblightdm-gobject
[sojka/lightdm.git] / liblightdm-gobject / greeter.c
index 9c50a5d3e973e5330b6e974dc39f11ba60907266..07aa2371f50881bc489240489e9eb7cc9bf0cab0 100644 (file)
@@ -21,8 +21,7 @@
 G_DEFINE_QUARK (lightdm_greeter_error, lightdm_greeter_error)
 
 enum {
-    PROP_0,
-    PROP_DEFAULT_SESSION_HINT,
+    PROP_DEFAULT_SESSION_HINT = 1,
     PROP_HIDE_USERS_HINT,
     PROP_SHOW_MANUAL_LOGIN_HINT,
     PROP_SHOW_REMOTE_LOGIN_HINT,
@@ -62,6 +61,7 @@ typedef struct
 
     /* Channel to read from daemon */
     GIOChannel *from_server_channel;
+    guint from_server_watch;
 
     /* Data read from the daemon */
     guint8 *read_buffer;
@@ -247,7 +247,7 @@ request_new (LightDMGreeter *greeter, GCancellable *cancellable, GAsyncReadyCall
     Request *request;
 
     request = g_object_new (request_get_type (), NULL);
-    request->greeter = g_object_ref (greeter);
+    request->greeter = greeter;
     if (cancellable)
         request->cancellable = g_object_ref (cancellable);
     request->callback = callback;
@@ -444,7 +444,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 +1884,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 +2148,6 @@ request_finalize (GObject *object)
 {
     Request *request = REQUEST (object);
 
-    g_clear_object (&request->greeter);
     g_clear_object (&request->cancellable);
     g_free (request->dir);