X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;ds=sidebyside;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fcontrolflow%2Fdrawing.c;h=c504cf5bc53beda7b66383807a2f44dae12cd7c1;hb=90ef7e4a2c6a41ec36bd2530b187cc1ef2cf0025;hp=ac278e97f36e4e8b1eecb96c21db75320d6bca68;hpb=2309386913ad8c4ce16fa35b7ce749ea7845e292;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c b/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c index ac278e97..c504cf5b 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c @@ -40,6 +40,7 @@ GdkColor drawing_colors[NUM_COLORS] = { 0, 0xFFFF, 0xFFFF, 0xFFFF }, /* COL_WHITE */ { 0, 0x0FFF, 0xFFFF, 0xFFFF }, /* COL_WAIT_FORK : pale blue */ { 0, 0xFFFF, 0xFFFF, 0x0000 }, /* COL_WAIT_CPU : yellow */ + { 0, 0xFFFF, 0xA000, 0xFCFF }, /* COL_EXIT : pale magenta */ { 0, 0xFFFF, 0x0000, 0xFFFF }, /* COL_ZOMBIE : purple */ { 0, 0xFFFF, 0x0000, 0x0000 }, /* COL_WAIT : red */ { 0, 0x0000, 0xFFFF, 0x0000 }, /* COL_RUN : green */ @@ -166,8 +167,12 @@ void drawing_data_request(Drawing_t *drawing, after_execmode_hook, events_request, LTTV_PRIO_STATE+5); - lttv_hooks_add(event, - after_fork_hook, + lttv_hooks_add(event, + before_process_hook, + events_request, + LTTV_PRIO_STATE-5); + lttv_hooks_add(event, + after_process_hook, events_request, LTTV_PRIO_STATE+5); @@ -479,6 +484,27 @@ after_expose_event( GtkWidget *widget, GdkEventExpose *event, gpointer user_data } +void +tree_row_activated(GtkTreeModel *treemodel, + GtkTreePath *arg1, + GtkTreeViewColumn *arg2, + gpointer user_data) +{ + ControlFlowData *cfd = (ControlFlowData*)user_data; + Drawing_t *drawing = cfd->drawing; + GtkTreeView *treeview = cfd->process_list->process_list_widget; + gint *path_indices; + gint height; + + path_indices = gtk_tree_path_get_indices (arg1); + + height = get_cell_height( + GTK_TREE_VIEW(treeview)); + drawing->horizontal_sel = height * path_indices[0]; + g_critical("new hor sel : %i", drawing->horizontal_sel); +} + + /* mouse click */ static gboolean button_press_event( GtkWidget *widget, GdkEventButton *event, gpointer user_data ) @@ -596,6 +622,7 @@ Drawing_t *drawing_construct(ControlFlowData *control_flow_data) drawing->damage_begin = 0; drawing->damage_end = 0; + drawing->horizontal_sel = -1; //gtk_widget_set_size_request(drawing->drawing_area->window, 50, 50); g_object_set_data_full( @@ -715,8 +742,7 @@ GtkWidget *drawing_get_widget(Drawing_t *drawing) * * Convert from window pixel and time interval to an absolute time. */ -//FIXME : could need ceil and floor versions of this function -void convert_pixels_to_time( +__inline void convert_pixels_to_time( gint width, guint x, LttTime window_time_begin, @@ -724,16 +750,18 @@ void convert_pixels_to_time( LttTime *time) { LttTime window_time_interval; + guint64 time_ll; window_time_interval = ltt_time_sub(window_time_end, window_time_begin); - *time = ltt_time_mul(window_time_interval, (x/(float)width)); + time_ll = ltt_time_to_uint64(window_time_interval); + time_ll = time_ll * x / width; + *time = ltt_time_from_uint64(time_ll); *time = ltt_time_add(window_time_begin, *time); } -//FIXME : could need ceil and floor versions of this function -void convert_time_to_pixels( +__inline void convert_time_to_pixels( LttTime window_time_begin, LttTime window_time_end, LttTime time, @@ -741,7 +769,7 @@ void convert_time_to_pixels( guint *x) { LttTime window_time_interval; - double interval_double, time_double; + guint64 time_ll, interval_ll; g_assert(ltt_time_compare(window_time_begin, time) <= 0 && ltt_time_compare(window_time_end, time) >= 0); @@ -750,11 +778,10 @@ void convert_time_to_pixels( time = ltt_time_sub(time, window_time_begin); - /* LttTime to double conversions here should really be under 4000 hours.. */ - interval_double = ltt_time_to_double(window_time_interval); - time_double = ltt_time_to_double(time); + time_ll = ltt_time_to_uint64(time); + interval_ll = ltt_time_to_uint64(window_time_interval); - *x = (guint)(time_double/interval_double * width); + *x = (guint)(time_ll * width / interval_ll); }