diff options
Diffstat (limited to 'trace-view.c')
-rw-r--r-- | trace-view.c | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/trace-view.c b/trace-view.c index c183b19..094f226 100644 --- a/trace-view.c +++ b/trace-view.c | |||
@@ -918,3 +918,119 @@ int trace_view_save_filters(struct tracecmd_xml_handle *handle, | |||
918 | 918 | ||
919 | return 0; | 919 | return 0; |
920 | } | 920 | } |
921 | |||
922 | static int load_event_filter(TraceViewStore *store, | ||
923 | struct tracecmd_xml_handle *handle, | ||
924 | struct tracecmd_xml_system_node *node) | ||
925 | { | ||
926 | struct tracecmd_xml_system_node *child; | ||
927 | struct event_filter *event_filter; | ||
928 | const char *name; | ||
929 | const char *value; | ||
930 | |||
931 | event_filter = trace_view_store_get_event_filter(store); | ||
932 | |||
933 | child = tracecmd_xml_node_child(node); | ||
934 | name = tracecmd_xml_node_type(child); | ||
935 | if (strcmp(name, "FilterType") != 0) | ||
936 | return -1; | ||
937 | |||
938 | value = tracecmd_xml_node_value(handle, child); | ||
939 | /* Do nothing with all events enabled */ | ||
940 | if (strcmp(value, "all events") == 0) | ||
941 | return 0; | ||
942 | |||
943 | node = tracecmd_xml_node_next(child); | ||
944 | if (!node) | ||
945 | return -1; | ||
946 | |||
947 | trace_view_store_clear_all_events_enabled(store); | ||
948 | |||
949 | trace_filter_load_events(event_filter, handle, node); | ||
950 | |||
951 | return 0; | ||
952 | } | ||
953 | |||
954 | static int load_task_filter(TraceViewStore *store, | ||
955 | struct tracecmd_xml_handle *handle, | ||
956 | struct tracecmd_xml_system_node *node) | ||
957 | { | ||
958 | struct tracecmd_xml_system_node *child; | ||
959 | const char *name; | ||
960 | const char *value; | ||
961 | |||
962 | child = tracecmd_xml_node_child(node); | ||
963 | name = tracecmd_xml_node_type(child); | ||
964 | if (strcmp(name, "FilterType") == 0) { | ||
965 | value = tracecmd_xml_node_value(handle, child); | ||
966 | printf("value = %s\n", value); | ||
967 | } | ||
968 | |||
969 | return 0; | ||
970 | } | ||
971 | |||
972 | static int load_hide_tasks(TraceViewStore *store, | ||
973 | struct tracecmd_xml_handle *handle, | ||
974 | struct tracecmd_xml_system_node *node) | ||
975 | { | ||
976 | struct tracecmd_xml_system_node *child; | ||
977 | const char *name; | ||
978 | const char *value; | ||
979 | |||
980 | child = tracecmd_xml_node_child(node); | ||
981 | name = tracecmd_xml_node_type(child); | ||
982 | if (strcmp(name, "FilterType") == 0) { | ||
983 | value = tracecmd_xml_node_value(handle, child); | ||
984 | printf("value = %s\n", value); | ||
985 | } | ||
986 | |||
987 | return 0; | ||
988 | } | ||
989 | |||
990 | int trace_view_load_filters(struct tracecmd_xml_handle *handle, | ||
991 | GtkTreeView *trace_tree) | ||
992 | { | ||
993 | struct tracecmd_xml_system *system; | ||
994 | struct tracecmd_xml_system_node *syschild; | ||
995 | GtkTreeModel *model; | ||
996 | TraceViewStore *store; | ||
997 | const char *name; | ||
998 | |||
999 | model = gtk_tree_view_get_model(trace_tree); | ||
1000 | if (!model) | ||
1001 | return -1; | ||
1002 | |||
1003 | store = TRACE_VIEW_STORE(model); | ||
1004 | |||
1005 | system = tracecmd_xml_find_system(handle, "TraceView"); | ||
1006 | if (!system) | ||
1007 | return -1; | ||
1008 | |||
1009 | syschild = tracecmd_xml_system_node(system); | ||
1010 | if (!syschild) | ||
1011 | goto out_free_sys; | ||
1012 | |||
1013 | do { | ||
1014 | name = tracecmd_xml_node_type(syschild); | ||
1015 | |||
1016 | if (strcmp(name, "EventFilter") == 0) | ||
1017 | load_event_filter(store, handle, syschild); | ||
1018 | |||
1019 | else if (strcmp(name, "TaskFilter") == 0) | ||
1020 | load_task_filter(store, handle, syschild); | ||
1021 | |||
1022 | else if (strcmp(name, "HideTasks") == 0) | ||
1023 | load_hide_tasks(store, handle, syschild); | ||
1024 | |||
1025 | syschild = tracecmd_xml_node_next(syschild); | ||
1026 | } while (syschild); | ||
1027 | |||
1028 | tracecmd_xml_free_system(system); | ||
1029 | |||
1030 | update_rows(trace_tree, store); | ||
1031 | return 0; | ||
1032 | |||
1033 | out_free_sys: | ||
1034 | tracecmd_xml_free_system(system); | ||
1035 | return -1; | ||
1036 | } | ||