process trace connection : time interval too long : 1 second. Result for now : proces...
authorcompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Wed, 7 Jan 2004 22:27:35 +0000 (22:27 +0000)
committercompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Wed, 7 Jan 2004 22:27:35 +0000 (22:27 +0000)
git-svn-id: http://ltt.polymtl.ca/svn@359 04897980-b3bd-0310-b5e0-8ef037075253

ltt/branches/poly/lttv/modules/guiControlFlow/CFV.c
ltt/branches/poly/lttv/modules/guiControlFlow/Drawing.c
ltt/branches/poly/lttv/modules/guiControlFlow/Drawing.h
ltt/branches/poly/lttv/modules/guiControlFlow/Event_Hooks.c
ltt/branches/poly/lttv/modules/guiControlFlow/Event_Hooks.h

index 5bca7f543647e66c2cee15e89b04ffb2ff09ff1c..6ac2b729cee4f9300ab37a265dd7151370657524 100644 (file)
@@ -117,7 +117,12 @@ guicontrolflow(void)
                        "Control_Flow_Data",
                        Control_Flow_Data,
                        (GDestroyNotify)guicontrolflow_destructor);
-                       
+               
+       g_object_set_data(
+                       G_OBJECT(Drawing_Widget),
+                       "Control_Flow_Data",
+                       Control_Flow_Data);
+                               
        gControl_Flow_Data_List = g_slist_append(
                        gControl_Flow_Data_List,
                        Control_Flow_Data);
index be9f3d92b5103294f31eecdceee19ea8ba718837..e89c8b295b6896125f35c4eb4f4a15d00c803a54 100644 (file)
@@ -1,11 +1,15 @@
 
-#include "Drawing.h"
-#include "CFV.h"
 #include <gtk/gtk.h>
 #include <gdk/gdk.h>
 
 #include <lttv/processTrace.h>
+#include <lttv/gtkTraceSet.h>
+#include <lttv/hook.h>
 
+#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,31 @@ 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);
+
+       convert_pixels_to_time(Drawing, x,
+                               &control_flow_data->Time_Window.start_time,
+                               &window_end,
+                               &start);
+
+       convert_pixels_to_time(Drawing, 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,
@@ -65,17 +85,28 @@ void drawing_data_request(Drawing_t *Drawing,
   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_drawing(
+       //guicontrolflow_get_process_list(Drawing->Control_Flow_Data),
+       //Drawing, *Pixmap, x, y, width, height);
   
        // Let's call processTrace() !!
-       
-       
-       //lttv_process_traceset_seek_time(tsc, start);
-       //lttv_traceset_context_add_hooks(
-       //lttv_process_traceset
-       //lttv_traceset_context_remove_hooks
+       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;
+
+       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,9 +281,9 @@ 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,
index f211879ffb2390074097ae3f500fddd100a48cbf..4957fb824d65669da8aeef258f392a0b59513814 100644 (file)
@@ -79,7 +79,7 @@ void convert_pixels_to_time(
                guint x,
                LttTime *window_time_begin,
                LttTime *window_time_end,
-               LttTime *begin);
+               LttTime *time);
 
 void convert_time_to_pixels(
                LttTime window_time_begin,
index 92f84fcbd2526b1763b5fc32620f0d30b2b6abb3..798d1d2e0ba4693609b0a39b432da484263f6f60 100644 (file)
@@ -414,12 +414,24 @@ h_guicontrolflow(MainWindow *pmParentWindow, LttvTracesetSelector * s, char * ke
        ControlFlowData *Control_Flow_Data = guicontrolflow() ;
        
        Control_Flow_Data->Parent_Window = pmParentWindow;
+       TimeWindow *time_window = guicontrolflow_get_time_window(Control_Flow_Data);
+       time_window->start_time.tv_sec = 0;
+       time_window->start_time.tv_nsec = 0;
+       time_window->time_width.tv_sec = 0;
+       time_window->time_width.tv_nsec = 0;
 
+       LttTime *current_time = guicontrolflow_get_current_time(Control_Flow_Data);
+       current_time->tv_sec = 0;
+       current_time->tv_nsec = 0;
+       
+       //g_critical("time width1 : %u",time_window->time_width);
+       
        get_time_window(pmParentWindow,
-                       guicontrolflow_get_time_window(Control_Flow_Data));
+                       time_window);
        get_current_time(pmParentWindow,
-                       guicontrolflow_get_current_time(Control_Flow_Data));
+                       current_time);
 
+       //g_critical("time width2 : %u",time_window->time_width);
        // Unreg done in the GuiControlFlow_Destructor
        reg_update_time_window(update_time_window_hook, Control_Flow_Data,
                                pmParentWindow);
@@ -443,16 +455,15 @@ int event_selected_hook(void *hook_data, void *call_data)
 
 }
 
-#ifdef DEBUG
 /* Hook called before drawing. Gets the initial context at the beginning of the
  * drawing interval and copy it to the context in Event_Request.
  */
 int draw_before_hook(void *hook_data, void *call_data)
 {
        EventRequest *Event_Request = (EventRequest*)hook_data;
-       EventsContext Events_Context = (EventsContext*)call_data;
+       //EventsContext Events_Context = (EventsContext*)call_data;
        
-       Event_Request->Events_Context = Events_Context;
+       //Event_Request->Events_Context = Events_Context;
 
        return 0;
 }
@@ -481,6 +492,7 @@ int draw_event_hook(void *hook_data, void *call_data)
 {
        EventRequest *Event_Request = (EventRequest*)hook_data;
        
+       
        return 0;
 }
 
@@ -492,7 +504,6 @@ int draw_after_hook(void *hook_data, void *call_data)
        g_free(Event_Request);
        return 0;
 }
-#endif
 
 
 
index 21f7df5cd3d16d1113a502a60fe2ce0999994882..b500e751bc4bb2f714266216beaad9ce4ce72793 100644 (file)
@@ -9,8 +9,30 @@
 
 #include <gtk/gtk.h>
 #include <lttv/mainWindow.h>
+#include <ltt/time.h>
 #include "Process_List.h"
 #include "Drawing.h"
+#include "CFV.h"
+
+
+/* Structure used to store and use information relative to one events refresh
+ * request. Typically filled in by the expose event callback, then passed to the
+ * library call, then used by the drawing hooks. Then, once all the events are
+ * sent, it is freed by the hook called after the reading.
+ */
+typedef struct _EventRequest
+{
+       ControlFlowData *Control_Flow_Data;
+       LttTime time_begin, time_end;
+       /* Fill the Events_Context during the initial expose, before calling for
+        * events.
+        */
+       //GArray Events_Context; //FIXME
+} EventRequest ;
+
+
+
+
 
 void send_test_data(ProcessList *Process_List, Drawing_t *Drawing);
 
@@ -51,4 +73,6 @@ void update_time_window_hook(void *hook_data, void *call_data);
 void update_current_time_hook(void *hook_data, void *call_data);
 
 
+
+
 #endif // _EVENT_HOOKS_H
This page took 0.028085 seconds and 4 git commands to generate.