diff options
author | Marco Trevisan (TreviƱo) <mail@3v1n0.net> | 2018-05-09 15:43:27 +0100 |
---|---|---|
committer | Iain Lane <iainl@gnome.org> | 2018-05-17 10:18:24 +0100 |
commit | b3cfe3025feb272040ab701cfdb800c07f7f4c50 (patch) | |
tree | dd881365769f36feacc831d5dbb40ae91f6717e0 | |
parent | 68910f303a571dbe8ee4df57018c27a50b26aa7e (diff) | |
download | gdm-b3cfe3025feb272040ab701cfdb800c07f7f4c50.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
(cherry picked from commit ccba35d58ae27b02979310d5914a96186afa31de)
-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); |