[gedit] filebrowser: clear signal in dispose to avoid assertion
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit] filebrowser: clear signal in dispose to avoid assertion
- Date: Sat, 20 Apr 2013 13:34:17 +0000 (UTC)
commit 2b06c874e3135a196297cfcf3f17fda82de930c6
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Sat Apr 20 15:29:38 2013 +0200
filebrowser: clear signal in dispose to avoid assertion
plugins/filebrowser/gedit-file-browser-widget.c | 38 +++++++++++++------------
1 file changed, 20 insertions(+), 18 deletions(-)
---
diff --git a/plugins/filebrowser/gedit-file-browser-widget.c b/plugins/filebrowser/gedit-file-browser-widget.c
index 5be02fc..a26b0b3 100644
--- a/plugins/filebrowser/gedit-file-browser-widget.c
+++ b/plugins/filebrowser/gedit-file-browser-widget.c
@@ -345,11 +345,31 @@ gedit_file_browser_widget_finalize (GObject *object)
}
static void
+clear_signals (GeditFileBrowserWidget *obj)
+{
+ GSList *item;
+ SignalNode *node;
+
+ item = obj->priv->signal_pool;
+ while (item != NULL)
+ {
+ node = (SignalNode *) (item->data);
+ item = g_slist_delete_link (item, item);
+
+ g_signal_handler_disconnect (node->object, node->id);
+ g_slice_free (SignalNode, node);
+ }
+
+ obj->priv->signal_pool = NULL;
+}
+
+static void
gedit_file_browser_widget_dispose (GObject *object)
{
GeditFileBrowserWidget *obj = GEDIT_FILE_BROWSER_WIDGET (object);
GeditFileBrowserWidgetPrivate *priv = obj->priv;
+ clear_signals (obj);
g_clear_object (&priv->file_store);
g_clear_object (&priv->bookmarks_store);
@@ -537,24 +557,6 @@ add_signal (GeditFileBrowserWidget *obj,
g_slist_prepend (obj->priv->signal_pool, node);
}
-static void
-clear_signals (GeditFileBrowserWidget *obj)
-{
- GSList *item;
- SignalNode *node;
-
- for (item = obj->priv->signal_pool; item; item = item->next)
- {
- node = (SignalNode *) (item->data);
-
- g_signal_handler_disconnect (node->object, node->id);
- g_slice_free (SignalNode, node);
- }
-
- g_slist_free (obj->priv->signal_pool);
- obj->priv->signal_pool = NULL;
-}
-
static gboolean
separator_func (GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]