aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--trace-graph.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/trace-graph.c b/trace-graph.c
index 2bbe73f..73e69d3 100644
--- a/trace-graph.c
+++ b/trace-graph.c
@@ -552,11 +552,16 @@ void trace_graph_update_filters(struct graph_info *ginfo,
552 struct filter_task *task_filter, 552 struct filter_task *task_filter,
553 struct filter_task *hide_tasks) 553 struct filter_task *hide_tasks)
554{ 554{
555 filter_task_hash_free(ginfo->task_filter); 555 /* Make sure the filter passed in is not the filter we use */
556 filter_task_hash_free(ginfo->hide_tasks); 556 if (task_filter != ginfo->task_filter) {
557 filter_task_hash_free(ginfo->task_filter);
558 ginfo->task_filter = filter_task_hash_copy(task_filter);
559 }
557 560
558 ginfo->task_filter = filter_task_hash_copy(task_filter); 561 if (hide_tasks != ginfo->hide_tasks) {
559 ginfo->hide_tasks = filter_task_hash_copy(hide_tasks); 562 filter_task_hash_free(ginfo->hide_tasks);
563 ginfo->hide_tasks = filter_task_hash_copy(hide_tasks);
564 }
560 565
561 if (ginfo->filter_enabled) 566 if (ginfo->filter_enabled)
562 redraw_graph(ginfo); 567 redraw_graph(ginfo);