aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--trace-filter.c81
-rw-r--r--trace-filter.h6
2 files changed, 61 insertions, 26 deletions
diff --git a/trace-filter.c b/trace-filter.c
index b8fc76f..9c220ee 100644
--- a/trace-filter.c
+++ b/trace-filter.c
@@ -493,18 +493,15 @@ static gint *get_event_ids(GtkTreeView *treeview)
493} 493}
494 494
495static GtkTreeModel * 495static GtkTreeModel *
496create_tree_filter_model(struct tracecmd_input *handle, 496create_tree_filter_model(struct pevent *pevent,
497 struct event_filter *event_filter) 497 struct event_filter *event_filter)
498{ 498{
499 GtkTreeStore *treestore; 499 GtkTreeStore *treestore;
500 GtkTreeIter iter_events; 500 GtkTreeIter iter_events;
501 struct pevent *pevent;
502 struct event_format **events; 501 struct event_format **events;
503 char *str; 502 char *str;
504 gint i; 503 gint i;
505 504
506 pevent = tracecmd_get_pevent(handle);
507
508 treestore = gtk_tree_store_new(NUM_ADV_FILTER_COLS, G_TYPE_BOOLEAN, 505 treestore = gtk_tree_store_new(NUM_ADV_FILTER_COLS, G_TYPE_BOOLEAN,
509 G_TYPE_STRING, G_TYPE_STRING, 506 G_TYPE_STRING, G_TYPE_STRING,
510 G_TYPE_INT); 507 G_TYPE_INT);
@@ -582,7 +579,7 @@ static void adv_filter_cursor_changed(GtkTreeView *treeview, gpointer data)
582} 579}
583 580
584static GtkWidget * 581static GtkWidget *
585create_adv_filter_view(struct tracecmd_input *handle, 582create_adv_filter_view(struct pevent *pevent,
586 struct event_filter *event_filter) 583 struct event_filter *event_filter)
587{ 584{
588 GtkTreeViewColumn *col; 585 GtkTreeViewColumn *col;
@@ -634,7 +631,7 @@ create_adv_filter_view(struct tracecmd_input *handle,
634 gtk_tree_view_column_add_attribute(col, renderer, "text", ADV_COL_FILTER); 631 gtk_tree_view_column_add_attribute(col, renderer, "text", ADV_COL_FILTER);
635 632
636 633
637 model = create_tree_filter_model(handle, event_filter); 634 model = create_tree_filter_model(pevent, event_filter);
638 635
639 gtk_tree_view_set_model(GTK_TREE_VIEW(view), model); 636 gtk_tree_view_set_model(GTK_TREE_VIEW(view), model);
640 637
@@ -679,6 +676,10 @@ void trace_adv_filter_dialog(struct tracecmd_input *handle,
679 if (!handle) 676 if (!handle)
680 return; 677 return;
681 678
679 pevent = tracecmd_get_pevent(handle);
680 if (!pevent)
681 return;
682
682 /* --- Make dialog window --- */ 683 /* --- Make dialog window --- */
683 684
684 dialog = gtk_dialog_new_with_buttons("Advanced Filters", 685 dialog = gtk_dialog_new_with_buttons("Advanced Filters",
@@ -694,7 +695,7 @@ void trace_adv_filter_dialog(struct tracecmd_input *handle,
694 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), 695 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin),
695 GTK_POLICY_AUTOMATIC, 696 GTK_POLICY_AUTOMATIC,
696 GTK_POLICY_AUTOMATIC); 697 GTK_POLICY_AUTOMATIC);
697 view = create_adv_filter_view(handle, event_filter); 698 view = create_adv_filter_view(pevent, event_filter);
698 gtk_container_add(GTK_CONTAINER(scrollwin), view); 699 gtk_container_add(GTK_CONTAINER(scrollwin), view);
699 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), scrollwin, TRUE, TRUE, 0); 700 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), scrollwin, TRUE, TRUE, 0);
700 701
@@ -708,8 +709,6 @@ void trace_adv_filter_dialog(struct tracecmd_input *handle,
708 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), label, TRUE, FALSE, 0); 709 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), label, TRUE, FALSE, 0);
709 gtk_widget_show(label); 710 gtk_widget_show(label);
710 711
711 pevent = tracecmd_get_pevent(handle);
712
713 combo_info.pevent = pevent; 712 combo_info.pevent = pevent;
714 713
715 event_box = event_info_box(&combo_info); 714 event_box = event_info_box(&combo_info);
@@ -802,13 +801,12 @@ static void get_tasks(GtkTreeView *treeview,
802} 801}
803 802
804static GtkTreeModel * 803static GtkTreeModel *
805create_task_model(struct tracecmd_input *handle, 804create_task_model(struct pevent *pevent,
806 gint *tasks, 805 gint *tasks,
807 gint *selected) 806 gint *selected)
808{ 807{
809 GtkTreeStore *treestore; 808 GtkTreeStore *treestore;
810 GtkTreeIter iter; 809 GtkTreeIter iter;
811 struct pevent *pevent;
812 const char *comm; 810 const char *comm;
813 gboolean select; 811 gboolean select;
814 gint *ret; 812 gint *ret;
@@ -819,8 +817,6 @@ create_task_model(struct tracecmd_input *handle,
819 if (!tasks) 817 if (!tasks)
820 return NULL; 818 return NULL;
821 819
822 pevent = tracecmd_get_pevent(handle);
823
824 treestore = gtk_tree_store_new(NUM_TASK_COLS, G_TYPE_BOOLEAN, 820 treestore = gtk_tree_store_new(NUM_TASK_COLS, G_TYPE_BOOLEAN,
825 G_TYPE_INT, G_TYPE_STRING); 821 G_TYPE_INT, G_TYPE_STRING);
826 822
@@ -919,7 +915,7 @@ static void task_cursor_changed(gpointer data, GtkTreeView *treeview)
919} 915}
920 916
921static GtkWidget * 917static GtkWidget *
922create_task_view(struct tracecmd_input *handle, 918create_task_view(struct pevent *pevent,
923 gint *tasks, gint *selected, 919 gint *tasks, gint *selected,
924 gboolean *start) 920 gboolean *start)
925{ 921{
@@ -972,7 +968,7 @@ create_task_view(struct tracecmd_input *handle,
972 gtk_tree_view_column_add_attribute(col, renderer, "text", TASK_COL_COMM); 968 gtk_tree_view_column_add_attribute(col, renderer, "text", TASK_COL_COMM);
973 969
974 970
975 model = create_task_model(handle, tasks, selected); 971 model = create_task_model(pevent, tasks, selected);
976 972
977 gtk_tree_view_set_model(GTK_TREE_VIEW(view), model); 973 gtk_tree_view_set_model(GTK_TREE_VIEW(view), model);
978 974
@@ -1002,6 +998,7 @@ void trace_task_dialog(struct tracecmd_input *handle,
1002 trace_task_cb_func func, 998 trace_task_cb_func func,
1003 gpointer data) 999 gpointer data)
1004{ 1000{
1001 struct pevent *pevent;
1005 GtkWidget *dialog; 1002 GtkWidget *dialog;
1006 GtkWidget *scrollwin; 1003 GtkWidget *scrollwin;
1007 GtkWidget *view; 1004 GtkWidget *view;
@@ -1009,6 +1006,13 @@ void trace_task_dialog(struct tracecmd_input *handle,
1009 gint *non_select; 1006 gint *non_select;
1010 int result; 1007 int result;
1011 1008
1009 if (!handle)
1010 return;
1011
1012 pevent = tracecmd_get_pevent(handle);
1013 if (!pevent)
1014 return;
1015
1012 /* --- Make dialog window --- */ 1016 /* --- Make dialog window --- */
1013 1017
1014 dialog = gtk_dialog_new_with_buttons("Select Tasks", 1018 dialog = gtk_dialog_new_with_buttons("Select Tasks",
@@ -1024,7 +1028,7 @@ void trace_task_dialog(struct tracecmd_input *handle,
1024 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), 1028 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin),
1025 GTK_POLICY_AUTOMATIC, 1029 GTK_POLICY_AUTOMATIC,
1026 GTK_POLICY_AUTOMATIC); 1030 GTK_POLICY_AUTOMATIC);
1027 view = create_task_view(handle, tasks, selected, &start); 1031 view = create_task_view(pevent, tasks, selected, &start);
1028 gtk_container_add(GTK_CONTAINER(scrollwin), view); 1032 gtk_container_add(GTK_CONTAINER(scrollwin), view);
1029 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), scrollwin, TRUE, TRUE, 0); 1033 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), scrollwin, TRUE, TRUE, 0);
1030 1034
@@ -1093,14 +1097,13 @@ gboolean event_is_enabled(gint *events, gint events_size, gint event)
1093} 1097}
1094 1098
1095static GtkTreeModel * 1099static GtkTreeModel *
1096create_tree_event_model(struct tracecmd_input *handle, 1100create_tree_event_model(struct pevent *pevent,
1097 struct event_filter *filter, 1101 struct event_filter *filter,
1098 gboolean all_events, gchar **systems_set, 1102 gboolean all_events, gchar **systems_set,
1099 gint *event_ids_set) 1103 gint *event_ids_set)
1100{ 1104{
1101 GtkTreeStore *treestore; 1105 GtkTreeStore *treestore;
1102 GtkTreeIter iter_all, iter_sys, iter_events; 1106 GtkTreeIter iter_all, iter_sys, iter_events;
1103 struct pevent *pevent;
1104 struct event_format **events; 1107 struct event_format **events;
1105 struct event_format *event; 1108 struct event_format *event;
1106 char *last_system = NULL; 1109 char *last_system = NULL;
@@ -1112,8 +1115,6 @@ create_tree_event_model(struct tracecmd_input *handle,
1112 gint event_ids_size; 1115 gint event_ids_size;
1113 gint i; 1116 gint i;
1114 1117
1115 pevent = tracecmd_get_pevent(handle);
1116
1117 treestore = gtk_tree_store_new(NUM_EVENT_COLS, G_TYPE_STRING, 1118 treestore = gtk_tree_store_new(NUM_EVENT_COLS, G_TYPE_STRING,
1118 G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, 1119 G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
1119 G_TYPE_BOOLEAN, G_TYPE_INT); 1120 G_TYPE_BOOLEAN, G_TYPE_INT);
@@ -1381,7 +1382,7 @@ static void expand_rows(GtkTreeView *tree, GtkTreeModel *model,
1381} 1382}
1382 1383
1383static GtkWidget * 1384static GtkWidget *
1384create_event_list_view(struct tracecmd_input *handle, 1385create_event_list_view(struct pevent *pevent,
1385 struct event_filter *filter, 1386 struct event_filter *filter,
1386 gboolean all_events, gchar **systems, 1387 gboolean all_events, gchar **systems,
1387 gint *events) 1388 gint *events)
@@ -1414,7 +1415,7 @@ create_event_list_view(struct tracecmd_input *handle,
1414 gtk_tree_view_column_add_attribute(col, renderer, "text", COL_EVENT); 1415 gtk_tree_view_column_add_attribute(col, renderer, "text", COL_EVENT);
1415 gtk_tree_view_column_add_attribute(col, renderer, "sensitive", COL_NORMAL); 1416 gtk_tree_view_column_add_attribute(col, renderer, "sensitive", COL_NORMAL);
1416 1417
1417 model = create_tree_event_model(handle, filter, all_events, systems, events); 1418 model = create_tree_event_model(pevent, filter, all_events, systems, events);
1418 1419
1419 gtk_tree_view_set_model(GTK_TREE_VIEW(view), model); 1420 gtk_tree_view_set_model(GTK_TREE_VIEW(view), model);
1420 1421
@@ -1564,7 +1565,7 @@ static void accept_events(GtkTreeView *view,
1564 g_free(events); 1565 g_free(events);
1565} 1566}
1566 1567
1567static void filter_event_dialog(struct tracecmd_input *handle, 1568static void filter_event_dialog(struct pevent *pevent,
1568 struct event_filter *filter, 1569 struct event_filter *filter,
1569 gboolean all_events, 1570 gboolean all_events,
1570 gchar **systems, gint *events, 1571 gchar **systems, gint *events,
@@ -1591,7 +1592,7 @@ static void filter_event_dialog(struct tracecmd_input *handle,
1591 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), 1592 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin),
1592 GTK_POLICY_AUTOMATIC, 1593 GTK_POLICY_AUTOMATIC,
1593 GTK_POLICY_AUTOMATIC); 1594 GTK_POLICY_AUTOMATIC);
1594 view = create_event_list_view(handle, filter, all_events, systems, events); 1595 view = create_event_list_view(pevent, filter, all_events, systems, events);
1595 1596
1596 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), scrollwin, TRUE, TRUE, 0); 1597 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), scrollwin, TRUE, TRUE, 0);
1597 gtk_container_add(GTK_CONTAINER(scrollwin), view); 1598 gtk_container_add(GTK_CONTAINER(scrollwin), view);
@@ -1633,10 +1634,33 @@ void trace_filter_event_dialog(struct tracecmd_input *handle,
1633 trace_filter_event_cb_func func, 1634 trace_filter_event_cb_func func,
1634 gpointer data) 1635 gpointer data)
1635{ 1636{
1636 filter_event_dialog(handle, NULL, all_events, systems, 1637 struct pevent *pevent;
1638
1639 if (!handle)
1640 return;
1641
1642 pevent = tracecmd_get_pevent(handle);
1643 if (!pevent)
1644 return;
1645
1646 filter_event_dialog(pevent, NULL, all_events, systems,
1647 events, func, data);
1648}
1649
1650void trace_filter_pevent_dialog(struct pevent *pevent,
1651 gboolean all_events,
1652 gchar **systems, gint *events,
1653 trace_filter_event_cb_func func,
1654 gpointer data)
1655{
1656 if (!pevent)
1657 return;
1658
1659 filter_event_dialog(pevent, NULL, all_events, systems,
1637 events, func, data); 1660 events, func, data);
1638} 1661}
1639 1662
1663
1640/** 1664/**
1641 * trace_filter_event_filter_dialog - make dialog with event listing 1665 * trace_filter_event_filter_dialog - make dialog with event listing
1642 * @handle: the handle to the tracecmd data file 1666 * @handle: the handle to the tracecmd data file
@@ -1653,15 +1677,20 @@ void trace_filter_event_filter_dialog(struct tracecmd_input *handle,
1653 trace_filter_event_cb_func func, 1677 trace_filter_event_cb_func func,
1654 gpointer data) 1678 gpointer data)
1655{ 1679{
1680 struct pevent *pevent;
1656 gchar **systems; 1681 gchar **systems;
1657 gint *event_ids; 1682 gint *event_ids;
1658 1683
1659 if (!handle) 1684 if (!handle)
1660 return; 1685 return;
1661 1686
1687 pevent = tracecmd_get_pevent(handle);
1688 if (!pevent)
1689 return;
1690
1662 trace_filter_convert_filter_to_names(filter, &systems, &event_ids); 1691 trace_filter_convert_filter_to_names(filter, &systems, &event_ids);
1663 1692
1664 filter_event_dialog(handle, filter, all_events, systems, 1693 filter_event_dialog(pevent, filter, all_events, systems,
1665 event_ids, func, data); 1694 event_ids, func, data);
1666} 1695}
1667 1696
diff --git a/trace-filter.h b/trace-filter.h
index 1800471..c85bb2a 100644
--- a/trace-filter.h
+++ b/trace-filter.h
@@ -102,6 +102,12 @@ void trace_filter_event_dialog(struct tracecmd_input *handle,
102 trace_filter_event_cb_func func, 102 trace_filter_event_cb_func func,
103 gpointer data); 103 gpointer data);
104 104
105void trace_filter_pevent_dialog(struct pevent *pevent,
106 gboolean all_events,
107 gchar **systems, gint *events,
108 trace_filter_event_cb_func func,
109 gpointer data);
110
105void trace_filter_event_filter_dialog(struct tracecmd_input *handle, 111void trace_filter_event_filter_dialog(struct tracecmd_input *handle,
106 struct event_filter *filter, 112 struct event_filter *filter,
107 gboolean all_events, 113 gboolean all_events,