[gdm] libgdm: add weak pointer for connection object
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm] libgdm: add weak pointer for connection object
- Date: Wed, 16 May 2018 15:02:15 +0000 (UTC)
commit ccba35d58ae27b02979310d5914a96186afa31de
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Wed May 9 15:43:27 2018 +0100
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
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 c017bf8..b5f3530 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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]