* be added after the state update. */
LttvProcessState *process;
process = lttv_state_find_process(tfs, pid_out);
+ //process = tfs->process;
if(process != NULL) {
/* Well, the process_out existed : we must get it in the process hash
{
g_assert(pid_out == 0 || pid_out != process->ppid);
/* Process not present */
+ ProcessInfo *process_info;
processlist_add(process_list,
pid_out,
process->last_cpu,
tfc->t_context->index,
name,
&pl_height,
+ &process_info,
&hashed_process_data);
- processlist_get_process_pixels(process_list,
- pid_out,
- process->last_cpu,
- &birth,
- tfc->t_context->index,
+ processlist_get_pixels_from_data(process_list,
+ process_info,
+ hashed_process_data,
&y,
- &height,
- &hashed_process_data);
+ &height);
drawing_insert_square( drawing, y, height);
}
* value.
*/
g_assert(hashed_process_data->x.middle != -1);
+ if(ltt_time_compare(hashed_process_data->next_good_time,
+ evtime) > 0)
{
+ if(hashed_process_data->x.middle_marked == FALSE) {
+ guint x;
+ convert_time_to_pixels(
+ time_window,
+ evtime,
+ width,
+ &x);
+
+ /* Draw collision indicator */
+ gdk_gc_set_foreground(drawing->gc, &drawing_colors[COL_WHITE]);
+ gdk_draw_point(drawing->pixmap,
+ drawing->gc,
+ x,
+ y+(height/2)-3);
+ hashed_process_data->x.middle_marked = TRUE;
+ }
+ } else {
guint x;
convert_time_to_pixels(
time_window,
hashed_process_data->x.middle = x;
hashed_process_data->x.middle_used = TRUE;
hashed_process_data->x.middle_marked = FALSE;
+
+ /* Calculate the next good time */
+ convert_pixels_to_time(width, x+1, time_window,
+ &hashed_process_data->next_good_time);
}
}
}
{
g_assert(pid_in == 0 || pid_in != process->ppid);
/* Process not present */
+ ProcessInfo *process_info;
processlist_add(process_list,
pid_in,
process->last_cpu,
tfc->t_context->index,
name,
&pl_height,
+ &process_info,
&hashed_process_data);
- processlist_get_process_pixels(process_list,
- pid_in,
- process->last_cpu,
- &birth,
- tfc->t_context->index,
+ processlist_get_pixels_from_data(process_list,
+ process_info,
+ hashed_process_data,
&y,
- &height,
- &hashed_process_data);
+ &height);
drawing_insert_square( drawing, y, height);
}
* value.
*/
g_assert(hashed_process_data->x.middle != -1);
+
+ if(ltt_time_compare(hashed_process_data->next_good_time,
+ evtime) > 0)
{
+ if(hashed_process_data->x.middle_marked == FALSE) {
+ guint x;
+ convert_time_to_pixels(
+ time_window,
+ evtime,
+ width,
+ &x);
+
+ /* Draw collision indicator */
+ gdk_gc_set_foreground(drawing->gc, &drawing_colors[COL_WHITE]);
+ gdk_draw_point(drawing->pixmap,
+ drawing->gc,
+ x,
+ y+(height/2)-3);
+ hashed_process_data->x.middle_marked = TRUE;
+ }
+ } else {
guint x;
convert_time_to_pixels(
hashed_process_data->x.middle = x;
hashed_process_data->x.middle_used = TRUE;
hashed_process_data->x.middle_marked = FALSE;
+
+ /* Calculate the next good time */
+ convert_pixels_to_time(width, x+1, time_window,
+ &hashed_process_data->next_good_time);
}
}
}
&hashed_process_data_in) == 1)
{
g_assert(pid_in == 0 || pid_in != process_in->ppid);
+ ProcessInfo *process_info;
/* Process not present */
processlist_add(process_list,
pid_in,
tfc->t_context->index,
name,
&pl_height,
+ &process_info,
&hashed_process_data_in);
- processlist_get_process_pixels(process_list,
- pid_in,
- process_in->last_cpu,
- &birth,
- tfc->t_context->index,
- &y_in,
- &height,
- &hashed_process_data_in);
+ processlist_get_pixels_from_data(process_list,
+ process_info,
+ hashed_process_data_in,
+ &y_in,
+ &height);
drawing_insert_square( control_flow_data->drawing, y_in, height);
}
- guint new_x;
-
- convert_time_to_pixels(
- time_window,
- evtime,
- width,
- &new_x);
-
- if(hashed_process_data_in->x.middle != new_x) {
- hashed_process_data_in->x.middle = new_x;
- hashed_process_data_in->x.middle_used = FALSE;
- hashed_process_data_in->x.middle_marked = FALSE;
- }
+ if(ltt_time_compare(hashed_process_data_in->next_good_time,
+ evtime) <= 0)
+ {
+ guint new_x;
+
+ convert_time_to_pixels(
+ time_window,
+ evtime,
+ width,
+ &new_x);
+ if(hashed_process_data_in->x.middle != new_x) {
+ hashed_process_data_in->x.middle = new_x;
+ hashed_process_data_in->x.middle_used = FALSE;
+ hashed_process_data_in->x.middle_marked = FALSE;
+ }
+ }
return 0;
&hashed_process_data) == 1)
{
g_assert(pid == 0 || pid != process->ppid);
+ ProcessInfo *process_info;
/* Process not present */
processlist_add(process_list,
pid,
tfc->t_context->index,
name,
&pl_height,
+ &process_info,
&hashed_process_data);
- processlist_get_process_pixels(process_list,
- pid,
- process->last_cpu,
- &birth,
- tfc->t_context->index,
- &y,
- &height,
- &hashed_process_data);
+ processlist_get_pixels_from_data(process_list,
+ process_info,
+ hashed_process_data,
+ &y,
+ &height);
drawing_insert_square( drawing, y, height);
}
* value.
*/
g_assert(hashed_process_data->x.over != -1);
+
+ if(ltt_time_compare(hashed_process_data->next_good_time,
+ evtime) > 0)
{
+ if(hashed_process_data->x.middle_marked == FALSE) {
+ guint x;
+ convert_time_to_pixels(
+ time_window,
+ evtime,
+ width,
+ &x);
+
+ /* Draw collision indicator */
+ gdk_gc_set_foreground(drawing->gc, &drawing_colors[COL_WHITE]);
+ gdk_draw_point(drawing->pixmap,
+ drawing->gc,
+ x,
+ y+(height/2)-3);
+ hashed_process_data->x.middle_marked = TRUE;
+ }
+ } else {
guint x;
convert_time_to_pixels(
hashed_process_data->x.middle = x;
hashed_process_data->x.middle_used = TRUE;
hashed_process_data->x.middle_marked = FALSE;
+
+ /* Calculate the next good time */
+ convert_pixels_to_time(width, x+1, time_window,
+ &hashed_process_data->next_good_time);
}
}
{
g_assert(pid == 0 || pid != process->ppid);
/* Process not present */
+ ProcessInfo *process_info;
processlist_add(process_list,
pid,
process->last_cpu,
tfc->t_context->index,
name,
&pl_height,
+ &process_info,
&hashed_process_data);
- processlist_get_process_pixels(process_list,
- pid,
- process->last_cpu,
- &birth,
- tfc->t_context->index,
- &y,
- &height,
- &hashed_process_data);
+ processlist_get_pixels_from_data(process_list,
+ process_info,
+ hashed_process_data,
+ &y,
+ &height);
drawing_insert_square( control_flow_data->drawing, y, height);
}
- guint new_x;
-
- convert_time_to_pixels(
- time_window,
- evtime,
- width,
- &new_x);
-
- if(hashed_process_data->x.middle != new_x) {
- hashed_process_data->x.middle = new_x;
- hashed_process_data->x.middle_used = FALSE;
- hashed_process_data->x.middle_marked = FALSE;
- }
+ if(ltt_time_compare(hashed_process_data->next_good_time,
+ evtime) <= 0)
+ {
+ guint new_x;
+
+ convert_time_to_pixels(
+ time_window,
+ evtime,
+ width,
+ &new_x);
+ if(hashed_process_data->x.middle != new_x) {
+ hashed_process_data->x.middle = new_x;
+ hashed_process_data->x.middle_used = FALSE;
+ hashed_process_data->x.middle_marked = FALSE;
+ }
+ }
return 0;
}
{
g_assert(pid == 0 || pid != process->ppid);
/* Process not present */
+ ProcessInfo *process_info;
processlist_add(process_list,
pid,
process->last_cpu,
tfc->t_context->index,
name,
&pl_height,
+ &process_info,
&hashed_process_data);
- processlist_get_process_pixels(process_list,
- pid,
- process->last_cpu,
- &birth,
- tfc->t_context->index,
- &y,
- &height,
- &hashed_process_data);
+ processlist_get_pixels_from_data(process_list,
+ process_info,
+ hashed_process_data,
+ &y,
+ &height);
drawing_insert_square( control_flow_data->drawing, y, height);
}
* value.
*/
g_assert(hashed_process_data->x.over != -1);
+
+ if(ltt_time_compare(hashed_process_data->next_good_time,
+ evtime) > 0)
{
+ if(hashed_process_data->x.middle_marked == FALSE) {
+ guint x;
+ convert_time_to_pixels(
+ time_window,
+ evtime,
+ width,
+ &x);
+
+ /* Draw collision indicator */
+ gdk_gc_set_foreground(drawing->gc, &drawing_colors[COL_WHITE]);
+ gdk_draw_point(drawing->pixmap,
+ drawing->gc,
+ x,
+ y+(height/2)-3);
+ hashed_process_data->x.middle_marked = TRUE;
+ }
+ } else {
guint x;
convert_time_to_pixels(
hashed_process_data->x.middle = x;
hashed_process_data->x.middle_used = TRUE;
hashed_process_data->x.middle_marked = FALSE;
+
+ /* Calculate the next good time */
+ convert_pixels_to_time(width, x+1, time_window,
+ &hashed_process_data->next_good_time);
}
}
{
g_assert(child_pid == 0 || child_pid != process_child->ppid);
/* Process not present */
+ ProcessInfo *process_info;
processlist_add(process_list,
child_pid,
process_child->last_cpu,
tfc->t_context->index,
name,
&pl_height,
+ &process_info,
&hashed_process_data_child);
- processlist_get_process_pixels(process_list,
- child_pid,
- process_child->last_cpu,
- &birth,
- tfc->t_context->index,
- &y_child,
- &height,
- &hashed_process_data_child);
+ processlist_get_pixels_from_data(process_list,
+ process_info,
+ hashed_process_data_child,
+ &y_child,
+ &height);
drawing_insert_square( control_flow_data->drawing, y_child, height);
}
- guint new_x;
- convert_time_to_pixels(
- time_window,
- evtime,
- width,
- &new_x);
+ if(ltt_time_compare(hashed_process_data_child->next_good_time,
+ evtime) <= 0)
+ {
+ guint new_x;
+ convert_time_to_pixels(
+ time_window,
+ evtime,
+ width,
+ &new_x);
- if(hashed_process_data_child->x.over != new_x) {
- hashed_process_data_child->x.over = new_x;
- hashed_process_data_child->x.over_used = FALSE;
- hashed_process_data_child->x.over_marked = FALSE;
- }
- if(hashed_process_data_child->x.middle != new_x) {
- hashed_process_data_child->x.middle = new_x;
- hashed_process_data_child->x.middle_used = FALSE;
- hashed_process_data_child->x.middle_marked = FALSE;
- }
- if(hashed_process_data_child->x.under != new_x) {
- hashed_process_data_child->x.under = new_x;
- hashed_process_data_child->x.under_used = FALSE;
- hashed_process_data_child->x.under_marked = FALSE;
+ if(hashed_process_data_child->x.over != new_x) {
+ hashed_process_data_child->x.over = new_x;
+ hashed_process_data_child->x.over_used = FALSE;
+ hashed_process_data_child->x.over_marked = FALSE;
+ }
+ if(hashed_process_data_child->x.middle != new_x) {
+ hashed_process_data_child->x.middle = new_x;
+ hashed_process_data_child->x.middle_used = FALSE;
+ hashed_process_data_child->x.middle_marked = FALSE;
+ }
+ if(hashed_process_data_child->x.under != new_x) {
+ hashed_process_data_child->x.under = new_x;
+ hashed_process_data_child->x.under_used = FALSE;
+ hashed_process_data_child->x.under_marked = FALSE;
+ }
}
} else if(sub_id == 3) { /* exit */
{
g_assert(pid == 0 || pid != process->ppid);
/* Process not present */
+ ProcessInfo *process_info;
processlist_add(process_list,
pid,
process->last_cpu,
tfc->t_context->index,
name,
&pl_height,
+ &process_info,
&hashed_process_data);
- processlist_get_process_pixels(process_list,
- pid,
- process->last_cpu,
- &birth,
- tfc->t_context->index,
- &y,
- &height,
- &hashed_process_data);
+ processlist_get_pixels_from_data(process_list,
+ process_info,
+ hashed_process_data,
+ &y,
+ &height);
drawing_insert_square( control_flow_data->drawing, y, height);
}
- guint new_x;
- convert_time_to_pixels(
- time_window,
- evtime,
- width,
- &new_x);
- if(hashed_process_data->x.middle != new_x) {
- hashed_process_data->x.middle = new_x;
- hashed_process_data->x.middle_used = FALSE;
- hashed_process_data->x.middle_marked = FALSE;
+ if(ltt_time_compare(hashed_process_data->next_good_time,
+ evtime) <= 0)
+ {
+ guint new_x;
+ convert_time_to_pixels(
+ time_window,
+ evtime,
+ width,
+ &new_x);
+ if(hashed_process_data->x.middle != new_x) {
+ hashed_process_data->x.middle = new_x;
+ hashed_process_data->x.middle_used = FALSE;
+ hashed_process_data->x.middle_marked = FALSE;
+ }
}
-
}
return 0;
const gchar *name = g_quark_to_string(process->name);
/* process HAS to be present */
- g_assert(processlist_get_process_pixels(process_list,
- process_info->pid,
- process_info->cpu,
- &birth,
- process_info->trace_num,
+ processlist_get_pixels_from_data(process_list,
+ process_info,
+ hashed_process_data,
&y,
- &height,
- &hashed_process_data) != 1);
+ &height);
/* Now, the process is in the state hash and our own process hash.
* We definitely can draw the items related to the ending state.
* value.
*/
g_assert(hashed_process_data->x.over != -1);
+
+ if(ltt_time_compare(hashed_process_data->next_good_time,
+ evtime) <= 0)
{
guint x;
if(x == hashed_process_data->x.middle &&
hashed_process_data->x.middle_used) {
+#if 0 /* do not mark closure : not missing information */
if(hashed_process_data->x.middle_marked == FALSE) {
/* Draw collision indicator */
gdk_gc_set_foreground(drawing->gc, &drawing_colors[COL_WHITE]);
y+(height/2)-3);
hashed_process_data->x.middle_marked = TRUE;
}
+#endif //0
/* Jump */
} else {
draw_context.drawinfo.start.x = hashed_process_data->x.middle;
hashed_process_data->x.middle = x;
/* but don't use the pixel */
hashed_process_data->x.middle_used = FALSE;
+
+ /* Calculate the next good time */
+ convert_pixels_to_time(width, x+1, time_window,
+ &hashed_process_data->next_good_time);
}
}
}