X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2FguiControlFlow%2FDrawing.c;h=cbd2e1059b385d89edc7a130b14e158f41fa99f6;hb=a6b3623edf87fccfbaf201e70c720d52f89a77fe;hp=be9f3d92b5103294f31eecdceee19ea8ba718837;hpb=8d088fb270b8b2e03e3632f1b5733485a6675c07;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/guiControlFlow/Drawing.c b/ltt/branches/poly/lttv/modules/guiControlFlow/Drawing.c index be9f3d92..cbd2e105 100644 --- a/ltt/branches/poly/lttv/modules/guiControlFlow/Drawing.c +++ b/ltt/branches/poly/lttv/modules/guiControlFlow/Drawing.c @@ -1,11 +1,15 @@ -#include "Drawing.h" -#include "CFV.h" #include #include #include +#include +#include +#include "Drawing.h" +#include "CFV.h" +#include "CFV-private.h" +#include "Event_Hooks.h" #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) @@ -46,15 +50,39 @@ void drawing_data_request(Drawing_t *Drawing, gint width, gint height) { - -// start from pixel to time(x) -// end from pixel to time (x + width) - -// LttvTracesetContext * tsc = get_traceset_context(event_viewer_data->mw); - if(width < 0) return ; if(height < 0) return ; + ControlFlowData *control_flow_data = + (ControlFlowData*)g_object_get_data( + G_OBJECT( + Drawing->Drawing_Area_V), + "Control_Flow_Data"); + + LttTime start, end; + LttTime window_end = ltt_time_add(control_flow_data->Time_Window.time_width, + control_flow_data->Time_Window.start_time); + + g_critical("req : window_end : %u, %u", window_end.tv_sec, + window_end.tv_nsec); + g_critical("req : time width : %u, %u", control_flow_data->Time_Window.time_width.tv_sec, + control_flow_data->Time_Window.time_width.tv_nsec); + + g_critical("x is : %i, x+width is : %i", x, x+width); + + convert_pixels_to_time(width, x, + &control_flow_data->Time_Window.start_time, + &window_end, + &start); + + convert_pixels_to_time(width, x + width, + &control_flow_data->Time_Window.start_time, + &window_end, + &end); + + LttvTracesetContext * tsc = + get_traceset_context(control_flow_data->Parent_Window); + gdk_draw_rectangle (*Pixmap, Drawing->Drawing_Area_V->style->white_gc, TRUE, @@ -62,20 +90,37 @@ void drawing_data_request(Drawing_t *Drawing, width, // do not overlap height); - send_test_process( - guicontrolflow_get_process_list(Drawing->Control_Flow_Data), - Drawing); - send_test_drawing( - guicontrolflow_get_process_list(Drawing->Control_Flow_Data), - Drawing, *Pixmap, x, y, width, height); + //send_test_process( + //guicontrolflow_get_process_list(Drawing->Control_Flow_Data), + //Drawing); + //send_test_drawing( + //guicontrolflow_get_process_list(Drawing->Control_Flow_Data), + //Drawing, *Pixmap, x, y, width, height); // Let's call processTrace() !! + EventRequest event_request; // Variable freed at the end of the function. + event_request.Control_Flow_Data = control_flow_data; + event_request.time_begin = start; + event_request.time_end = end; + + g_critical("req : start : %u, %u", event_request.time_begin.tv_sec, + event_request.time_begin.tv_nsec); + + g_critical("req : end : %u, %u", event_request.time_end.tv_sec, + event_request.time_end.tv_nsec); - - //lttv_process_traceset_seek_time(tsc, start); - //lttv_traceset_context_add_hooks( - //lttv_process_traceset - //lttv_traceset_context_remove_hooks + LttvHooks *event = lttv_hooks_new(); + lttv_hooks_add(event, draw_event_hook, &event_request); + + lttv_process_traceset_seek_time(tsc, start); + lttv_traceset_context_add_hooks(tsc, + NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, event, NULL); + lttv_process_traceset(tsc, end, G_MAXULONG); + lttv_traceset_context_remove_hooks(tsc, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, event, NULL); + + lttv_hooks_destroy(event); } /* Callbacks */ @@ -250,12 +295,12 @@ GtkWidget *drawing_get_widget(Drawing_t *Drawing) return Drawing->Drawing_Area_V; } -/* get_time_from_pixels +/* convert_pixels_to_time * - * Get the time interval from window time and pixels, and pixels requested. + * Convert from window pixel and time interval to an absolute time. */ void convert_pixels_to_time( - Drawing_t *Drawing, + gint width, guint x, LttTime *window_time_begin, LttTime *window_time_end, @@ -265,7 +310,7 @@ void convert_pixels_to_time( window_time_interval = ltt_time_sub(*window_time_end, *window_time_begin); - *time = ltt_time_mul(window_time_interval, (x/(float)Drawing->width)); + *time = ltt_time_mul(window_time_interval, (x/(float)width)); *time = ltt_time_add(*window_time_begin, *time); } @@ -275,7 +320,7 @@ void convert_time_to_pixels( LttTime window_time_begin, LttTime window_time_end, LttTime time, - Drawing_t *Drawing, + int width, guint *x) { LttTime window_time_interval; @@ -288,7 +333,7 @@ void convert_time_to_pixels( interval_float = ltt_time_to_double(window_time_interval); time_float = ltt_time_to_double(time); - *x = (guint)(time_float/interval_float * Drawing->width); + *x = (guint)(time_float/interval_float * width); }