From 8a8e894f801147d13b1a4dbb0035d7d3c8477cc2 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 27 Jun 2019 12:38:45 +0200 Subject: [PATCH] core: add and use nm_keep_alive_destroy() When we are done with a NMKeepAlive instance, we always should do three things: - unset the owner - disarm (freeze) the keep-alive - give up our reference. Add and use nm_keep_alive_destroy() that does this. --- src/nm-active-connection.c | 3 +-- src/nm-keep-alive.c | 20 ++++++++++++++++++++ src/nm-keep-alive.h | 2 ++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/nm-active-connection.c b/src/nm-active-connection.c index 4e01202c6f..06932b5f15 100644 --- a/src/nm-active-connection.c +++ b/src/nm-active-connection.c @@ -1533,8 +1533,7 @@ finalize (GObject *object) nm_dbus_track_obj_path_set (&priv->settings_connection, NULL, FALSE); - _nm_keep_alive_set_owner (priv->keep_alive, NULL); - g_clear_object (&priv->keep_alive); + nm_clear_pointer (&priv->keep_alive, nm_keep_alive_destroy); G_OBJECT_CLASS (nm_active_connection_parent_class)->finalize (object); } diff --git a/src/nm-keep-alive.c b/src/nm-keep-alive.c index 1390971c93..ba080a8188 100644 --- a/src/nm-keep-alive.c +++ b/src/nm-keep-alive.c @@ -385,6 +385,26 @@ nm_keep_alive_disarm (NMKeepAlive *self) cleanup_dbus_watch (self); } +/** + * nm_keep_alive_destroy: + * @self: (allow-none): the #NMKeepAlive instance to destroy. + * + * This does 3 things in one: + * + * - set owner to %NULL + * - disarm the instance. + * - unref @self. + */ +void +nm_keep_alive_destroy (NMKeepAlive *self) +{ + if (!self) + return; + _nm_keep_alive_set_owner (self, NULL); + nm_keep_alive_disarm (self); + g_object_unref (self); +} + /*****************************************************************************/ static void diff --git a/src/nm-keep-alive.h b/src/nm-keep-alive.h index 160b2adb58..fcee9d6dee 100644 --- a/src/nm-keep-alive.h +++ b/src/nm-keep-alive.h @@ -43,6 +43,8 @@ gboolean nm_keep_alive_is_alive (NMKeepAlive *self); void nm_keep_alive_arm (NMKeepAlive *self); void nm_keep_alive_disarm (NMKeepAlive *self); +void nm_keep_alive_destroy (NMKeepAlive *self); + void nm_keep_alive_set_settings_connection_watch_visible (NMKeepAlive *self, NMSettingsConnection *connection);