[evolution/gnome-3-18] Bug 639299 - Crash under e-cell-tree.c:animate_expander
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/gnome-3-18] Bug 639299 - Crash under e-cell-tree.c:animate_expander
- Date: Tue, 3 Nov 2015 07:15:00 +0000 (UTC)
commit 7fd2bbe53952d13110622d1165fb2be34d1ded48
Author: Milan Crha <mcrha redhat com>
Date: Tue Nov 3 08:12:42 2015 +0100
Bug 639299 - Crash under e-cell-tree.c:animate_expander
e-util/e-cell-tree.c | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
---
diff --git a/e-util/e-cell-tree.c b/e-util/e-cell-tree.c
index 507d850..3f83ef6 100644
--- a/e-util/e-cell-tree.c
+++ b/e-util/e-cell-tree.c
@@ -154,6 +154,11 @@ ect_kill_view (ECellView *ecv)
{
ECellTreeView *tree_view = (ECellTreeView *) ecv;
+ if (tree_view->animate_timeout) {
+ g_source_remove (tree_view->animate_timeout);
+ tree_view->animate_timeout = 0;
+ }
+
if (tree_view->cell_view.kill_view_cb)
(tree_view->cell_view.kill_view_cb)(ecv, tree_view->cell_view.kill_view_cb_data);
@@ -392,10 +397,12 @@ animate_expander (gpointer data)
animate_closure_t *closure = (animate_closure_t *) data;
cairo_t *cr;
+ if (g_source_is_destroyed (g_main_current_source ()))
+ return FALSE;
+
if (closure->finish) {
e_tree_table_adapter_node_set_expanded (closure->etta, closure->node, !closure->expanded);
closure->ectv->animate_timeout = 0;
- g_free (data);
return FALSE;
}
@@ -475,8 +482,8 @@ ect_event (ECellView *ecell_view,
closure->expanded = expanded;
closure->area = area;
tree_view->animate_timeout =
- e_named_timeout_add (
- 50, animate_expander, closure);
+ e_named_timeout_add_full (G_PRIORITY_DEFAULT,
+ 50, animate_expander, closure, g_free);
return TRUE;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]