const LttEvent* event,
const LttTracefile* tracefile,
const LttTrace* trace,
- const LttvTracefileContext* context
+ const LttvTracefileContext* context,
+ const LttvProcessState* state,
+ const LttvTraceContext* tc
/*,...*/)
{
gboolean lresult = FALSE, rresult = FALSE;
- LttvProcessState* state;
-
- LttvTraceState *ts = (LttvTraceState*)context->t_context;
+ LttvTraceState *ts;
LttvTracefileState *tfs = (LttvTracefileState*)context;
- guint cpu = tfs->cpu;
- state = ts->running_process[cpu];
+ if(tc)
+ ts = (LttvTraceState*)tc;
+ else if(context)
+ ts = (LttvTraceState*)context->t_context;
+
+ if(tfs) {
+ guint cpu = tfs->cpu;
+ if(ts)
+ state = ts->running_process[cpu];
+ }
/*
* Parse left branch
*/
if(t->left == LTTV_TREE_NODE) {
- lresult = lttv_filter_tree_parse(t->l_child.t,event,tracefile,trace,context);
+ lresult = lttv_filter_tree_parse(t->l_child.t,event,tracefile,trace,context,NULL,NULL);
}
else if(t->left == LTTV_TREE_LEAF) {
lresult = lttv_filter_tree_parse_branch(t->l_child.leaf,event,tracefile,trace,state,context);
* Parse right branch
*/
if(t->right == LTTV_TREE_NODE) {
- rresult = lttv_filter_tree_parse(t->r_child.t,event,tracefile,trace,context);
+ rresult = lttv_filter_tree_parse(t->r_child.t,event,tracefile,trace,context,NULL,NULL);
}
else if(t->right == LTTV_TREE_LEAF) {
rresult = lttv_filter_tree_parse_branch(t->r_child.leaf,event,tracefile,trace,state,context);
tfc->target_pid = pid_out;
if(!filter || !filter->head ||
lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc)) {
+ tfc->t_context->t,tfc,NULL,NULL)) {
/* For the pid_out */
/* First, check if the current process is in the state computation
* process list. If it is there, that means we must add it right now and
tfc->target_pid = pid_in;
if(!filter || !filter->head ||
lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc)) {
+ tfc->t_context->t,tfc,NULL,NULL)) {
/* For the pid_in */
/* First, check if the current process is in the state computation
* process list. If it is there, that means we must add it right now and
LttvFilter *filter = control_flow_data->filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
LttTime evtime = ltt_event_time(e);
LttvFilter *filter = control_flow_data->filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
LttTime evtime = ltt_event_time(e);
LttvFilter *filter = control_flow_data->filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
LttTime evtime = ltt_event_time(e);
LttvFilter *filter = control_flow_data->filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
LttTime evtime = ltt_event_time(e);
LttvFilter *filter = control_flow_data->filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
LttTime evtime = ltt_event_time(e);
LttvFilter *filter = control_flow_data->filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
LttTime evtime = ltt_event_time(e);
LttvFilter *filter = control_flow_data->filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
guint cpu = tfs->cpu;
LttvFilter *filter = control_flow_data->filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
guint cpu = tfs->cpu;
LttvFilter *filter = control_flow_data->filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
LttTime evtime = ltt_event_time(e);
if(unlikely(process != NULL)) {
+ LttvFilter *filter = control_flow_data->filter;
+ if(filter != NULL && filter->head != NULL)
+ if(!lttv_filter_tree_parse(filter->head,NULL,NULL,
+ tc->t,NULL,process,tc))
+ return FALSE;
+
/* Only draw for processes that are currently in the trace states */
ProcessList *process_list = control_flow_data->process_list;
LttvFilter *filter = control_flow_data->filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
LttTime evtime = ltt_event_time(e);
return 0;
}
-
-
LttvFilter *filter = event_viewer_data->main_win_filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
filter = event_viewer_data->filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
LttvFilter *filter = event_viewer_data->main_win_filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
filter = event_viewer_data->filter;
if(filter != NULL && filter->head != NULL)
if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
- tfc->t_context->t,tfc))
+ tfc->t_context->t,tfc,NULL,NULL))
return FALSE;
lttv_traceset_context_position_save(tfc->t_context->ts_context,