#define g_info(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, format)
#define g_debug(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format)
+
+GdkColor drawing_colors[NUM_COLORS] =
+{ /* Pixel, R, G, B */
+ { 0, 0, 0, 0 }, /* COL_BLACK */
+ { 0, 0xFFFF, 0xFFFF, 0xFFFF }, /* COL_WHITE */
+ { 0, 0x0fff, 0xffff, 0xfffF }, /* COL_WAIT_FORK : pale blue */
+ { 0, 0xffff, 0xffff, 0x0000 }, /* COL_WAIT_CPU : yeallow */
+ { 0, 0xffff, 0x0000, 0xffff }, /* COL_ZOMBIE : purple */
+ { 0, 0xffff, 0x0000, 0x0000 }, /* COL_WAIT : red */
+ { 0, 0x0000, 0xffff, 0x0000 } /* COL_RUN : green */
+};
+
+
+
/*****************************************************************************
* drawing functions *
*****************************************************************************/
motion_notify_ruler(GtkWidget *widget, GdkEventMotion *event, gpointer user_data);
-//FIXME Colors will need to be dynamic. Graphic context part not done so far.
-typedef enum
-{
- RED,
- GREEN,
- BLUE,
- WHITE,
- BLACK
-
-} ControlFlowColors;
-
-/* Vector of unallocated colors */
-static GdkColor CF_Colors [] =
-{
- { 0, 0xffff, 0x0000, 0x0000 }, // RED
- { 0, 0x0000, 0xffff, 0x0000 }, // GREEN
- { 0, 0x0000, 0x0000, 0xffff }, // BLUE
- { 0, 0xffff, 0xffff, 0xffff }, // WHITE
- { 0, 0x0000, 0x0000, 0x0000 } // BLACK
-};
-
-
/* Function responsible for updating the exposed area.
* It must do an events request to the lttvwindow API to ask for this update.
* Note : this function cannot clear the background, because it may
events_request,
LTTV_PRIO_DEFAULT);
-
+ /* FIXME : hooks are registered global instead of by ID.
+ * This is due to the lack of granularity of main window's events requests.
+ * Should be fixed for gain of performance.
+ */
+ lttv_hooks_add(event,
+ before_schedchange_hook,
+ events_request,
+ LTTV_PRIO_STATE-5);
+ lttv_hooks_add(event,
+ after_schedchange_hook,
+ events_request,
+ LTTV_PRIO_STATE+5);
+#if 0
lttv_hooks_add(event,
- draw_before_hook,
+ before_execmode_hook,
events_request,
LTTV_PRIO_STATE-5);
lttv_hooks_add(event,
- draw_after_hook,
+ after_execmode_hook,
+ events_request,
+ LTTV_PRIO_STATE+5);
+#endif //0
+ lttv_hooks_add(event,
+ after_fork_hook,
events_request,
LTTV_PRIO_STATE+5);
LttvTracesetContext *tsc = LTTV_TRACESET_CONTEXT(tss);
LttTime current_time = lttv_traceset_context_get_current_tfc(tsc)->timestamp;
- cfd->drawing->last_start = current_time;
+ //cfd->drawing->last_start = LTT_TIME_MIN(current_time,
+ // events_request->end_time);
}
LttTime window_end = ltt_time_add(time_window.time_width,
time_window.start_time);
-
+#if 0
convert_time_to_pixels(
time_window.start_time,
window_end,
drawing->width,
&x);
+#endif //0
convert_time_to_pixels(
time_window.start_time,
window_end,
end_time,
drawing->width,
&x_end);
-
+ x = drawing->damage_begin;
+ // x_end = drawing->damage_end;
width = x_end - x;
drawing->damage_begin = x+width;
window_end,
&time);
- lttvwindow_report_current_time(control_flow_data->tab, &time);
+ lttvwindow_report_current_time(control_flow_data->tab, time);
}
- lttvwindow_report_focus(control_flow_data->tab,
- gtk_widget_get_parent(guicontrolflow_get_widget(control_flow_data)));
-
return FALSE;
}
drawing->ruler_hbox = gtk_hbox_new(FALSE, 1);
drawing->ruler = gtk_drawing_area_new ();
- gtk_widget_add_events(drawing->ruler, GDK_BUTTON_PRESS_MASK);
//gtk_widget_set_size_request(drawing->ruler, -1, 27);
drawing->padding = gtk_drawing_area_new ();
- gtk_widget_add_events(drawing->padding, GDK_BUTTON_PRESS_MASK);
//gtk_widget_set_size_request(drawing->padding, -1, 27);
gtk_box_pack_start(GTK_BOX(drawing->ruler_hbox), drawing->ruler,
TRUE, TRUE, 0);
// drawing->drawing_area->allocation.height,
// -1);
- gtk_widget_add_events(drawing->drawing_area, GDK_BUTTON_PRESS_MASK);
-
g_signal_connect (G_OBJECT(drawing->drawing_area),
"configure_event",
G_CALLBACK (configure_event),