[anjuta] libanjuta: Destroy plugins when the main anjuta window is closed
- From: Sebastien Granjoux <sgranjoux src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [anjuta] libanjuta: Destroy plugins when the main anjuta window is closed
- Date: Sat, 10 Nov 2012 10:08:02 +0000 (UTC)
commit 92ca492f73b888c1d0959f953fd920ecca420a94
Author: SÃbastien Granjoux <seb sfo free fr>
Date: Fri Nov 9 22:46:17 2012 +0100
libanjuta: Destroy plugins when the main anjuta window is closed
libanjuta/anjuta-plugin-manager.c | 18 ++++++++++++------
libanjuta/anjuta-plugin.c | 14 +-------------
2 files changed, 13 insertions(+), 19 deletions(-)
---
diff --git a/libanjuta/anjuta-plugin-manager.c b/libanjuta/anjuta-plugin-manager.c
index bc74ede..a163d56 100644
--- a/libanjuta/anjuta-plugin-manager.c
+++ b/libanjuta/anjuta-plugin-manager.c
@@ -2221,26 +2221,32 @@ anjuta_plugin_manager_init (AnjutaPluginManager *object)
g_free, NULL);
}
+static gboolean
+on_foreach_remove_unref (gpointer k, gpointer v, gpointer d)
+{
+ g_object_unref (G_OBJECT (v));
+ return TRUE;
+}
+
static void
-anjuta_plugin_manager_finalize (GObject *object)
+anjuta_plugin_manager_dispose (GObject *object)
{
AnjutaPluginManagerPriv *priv;
priv = ANJUTA_PLUGIN_MANAGER (object)->priv;
if (priv->available_plugins)
{
- /* anjuta_plugin_manager_unload_all_plugins (ANJUTA_PLUGIN_MANAGER (object)); */
g_list_foreach (priv->available_plugins, (GFunc)g_object_unref, NULL);
g_list_free (priv->available_plugins);
priv->available_plugins = NULL;
}
if (priv->activated_plugins)
{
- g_hash_table_destroy (priv->activated_plugins);
+ g_hash_table_foreach_remove (priv->activated_plugins, on_foreach_remove_unref, NULL);
priv->activated_plugins = NULL;
}
if (priv->plugins_cache)
{
- g_hash_table_destroy (priv->plugins_cache);
+ g_hash_table_foreach_remove (priv->plugins_cache, on_foreach_remove_unref, NULL);
priv->plugins_cache = NULL;
}
if (priv->plugins_by_name)
@@ -2271,7 +2277,7 @@ anjuta_plugin_manager_finalize (GObject *object)
anjuta_c_plugin_factory = NULL;
}
#endif
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ G_OBJECT_CLASS (parent_class)->dispose (object);
}
static void
@@ -2347,7 +2353,7 @@ anjuta_plugin_manager_class_init (AnjutaPluginManagerClass *klass)
GObjectClass* object_class = G_OBJECT_CLASS (klass);
parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass));
- object_class->finalize = anjuta_plugin_manager_finalize;
+ object_class->dispose = anjuta_plugin_manager_dispose;
object_class->set_property = anjuta_plugin_manager_set_property;
object_class->get_property = anjuta_plugin_manager_get_property;
diff --git a/libanjuta/anjuta-plugin.c b/libanjuta/anjuta-plugin.c
index 44dd51a..27827db 100644
--- a/libanjuta/anjuta-plugin.c
+++ b/libanjuta/anjuta-plugin.c
@@ -229,19 +229,7 @@ anjuta_plugin_dispose (GObject *object)
AnjutaPlugin *plugin = ANJUTA_PLUGIN (object);
if (plugin->priv->watches) {
- GList *l;
-
- for (l = plugin->priv->watches; l != NULL; l = l->next) {
- Watch *watch = (Watch *)l->data;
-
- if (watch->removed && watch->need_remove) {
- watch->removed (plugin,
- watch->name,
- watch->user_data);
- }
-
- destroy_watch (watch);
- }
+ g_list_foreach (plugin->priv->watches, (GFunc)destroy_watch, NULL);
g_list_free (plugin->priv->watches);
plugin->priv->watches = NULL;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]