From bffe507cda787338a4f9c8a25eb166f67f2b4a3a Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 5 Jun 2015 22:59:48 +0200 Subject: [PATCH] keyfile: refactor dispose() of SCPluginKeyfile --- src/settings/plugins/keyfile/plugin.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/settings/plugins/keyfile/plugin.c b/src/settings/plugins/keyfile/plugin.c index 5265e67e4b..0a66d7df8f 100644 --- a/src/settings/plugins/keyfile/plugin.c +++ b/src/settings/plugins/keyfile/plugin.c @@ -65,8 +65,6 @@ typedef struct { const char *conf_file; GFileMonitor *conf_file_monitor; guint conf_file_monitor_id; - - gboolean disposed; } SCPluginKeyfilePrivate; static void @@ -628,25 +626,24 @@ dispose (GObject *object) { SCPluginKeyfilePrivate *priv = SC_PLUGIN_KEYFILE_GET_PRIVATE (object); - if (priv->disposed) - goto out; - - priv->disposed = TRUE; - if (priv->monitor) { - if (priv->monitor_id) + if (priv->monitor_id) { g_signal_handler_disconnect (priv->monitor, priv->monitor_id); + priv->monitor_id = 0; + } g_file_monitor_cancel (priv->monitor); - g_object_unref (priv->monitor); + g_clear_object (&priv->monitor); } if (priv->conf_file_monitor) { - if (priv->conf_file_monitor_id) + if (priv->conf_file_monitor_id) { g_signal_handler_disconnect (priv->conf_file_monitor, priv->conf_file_monitor_id); + priv->conf_file_monitor_id = 0; + } g_file_monitor_cancel (priv->conf_file_monitor); - g_object_unref (priv->conf_file_monitor); + g_clear_object (&priv->conf_file_monitor); } if (priv->connections) { @@ -654,7 +651,6 @@ dispose (GObject *object) priv->connections = NULL; } -out: G_OBJECT_CLASS (sc_plugin_keyfile_parent_class)->dispose (object); }