diff options
author | Marco Trevisan (TreviƱo) <mail@3v1n0.net> | 2018-05-09 15:43:27 +0100 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2018-05-16 10:01:22 -0400 |
commit | ccba35d58ae27b02979310d5914a96186afa31de (patch) | |
tree | 9591586795c93c7e34e60a3e6157ba7b1c6485c5 /libgdm | |
parent | 4654042d22c71da599d60a7e2f0570acf3d4a166 (diff) | |
download | gdm-ccba35d58ae27b02979310d5914a96186afa31de.tar.gz |
libgdm: add weak pointer for connection object
At the moment we fail to nullify GdmClient's
connection to GDM when the connection is disposed.
This commit adds a weak pointer to correct that mistake.
https://bugzilla.gnome.org/show_bug.cgi?id=795940
Diffstat (limited to 'libgdm')
-rw-r--r-- | libgdm/gdm-client.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libgdm/gdm-client.c b/libgdm/gdm-client.c index c017bf86..b5f35306 100644 --- a/libgdm/gdm-client.c +++ b/libgdm/gdm-client.c @@ -460,6 +460,10 @@ gdm_client_open_connection_sync (GdmClient *client, g_clear_pointer (&client->priv->address, g_free); goto out; } + + g_object_add_weak_pointer (G_OBJECT (client->priv->connection), + (gpointer *) + &client->priv->connection); } else { client->priv->connection = g_object_ref (client->priv->connection); } @@ -583,6 +587,8 @@ gdm_client_open_connection_finish (GdmClient *client, if (client->priv->connection == NULL) { client->priv->connection = g_steal_pointer (&connection); + g_object_add_weak_pointer (G_OBJECT (client->priv->connection), + (gpointer *) &client->priv->connection); } else if (client->priv->connection == connection) { connection = NULL; } @@ -1616,6 +1622,12 @@ gdm_client_finalize (GObject *object) &client->priv->chooser); } + if (client->priv->connection != NULL) { + g_object_remove_weak_pointer (G_OBJECT (client->priv->connection), + (gpointer *) + &client->priv->connection); + } + g_clear_object (&client->priv->manager); g_clear_object (&client->priv->connection); |