diff options
Diffstat (limited to 'trace-filter.c')
-rw-r--r-- | trace-filter.c | 81 |
1 files changed, 55 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 | ||
495 | static GtkTreeModel * | 495 | static GtkTreeModel * |
496 | create_tree_filter_model(struct tracecmd_input *handle, | 496 | create_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 | ||
584 | static GtkWidget * | 581 | static GtkWidget * |
585 | create_adv_filter_view(struct tracecmd_input *handle, | 582 | create_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 | ||
804 | static GtkTreeModel * | 803 | static GtkTreeModel * |
805 | create_task_model(struct tracecmd_input *handle, | 804 | create_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 | ||
921 | static GtkWidget * | 917 | static GtkWidget * |
922 | create_task_view(struct tracecmd_input *handle, | 918 | create_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 | ||
1095 | static GtkTreeModel * | 1099 | static GtkTreeModel * |
1096 | create_tree_event_model(struct tracecmd_input *handle, | 1100 | create_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 | ||
1383 | static GtkWidget * | 1384 | static GtkWidget * |
1384 | create_event_list_view(struct tracecmd_input *handle, | 1385 | create_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 | ||
1567 | static void filter_event_dialog(struct tracecmd_input *handle, | 1568 | static 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 | |||
1650 | void 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 | ||