authors in about
authorcompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Fri, 6 Aug 2004 06:05:13 +0000 (06:05 +0000)
committercompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Fri, 6 Aug 2004 06:05:13 +0000 (06:05 +0000)
git-svn-id: http://ltt.polymtl.ca/svn@667 04897980-b3bd-0310-b5e0-8ef037075253

ltt/branches/poly/AUTHORS
ltt/branches/poly/lttv/modules/gui/controlflow/drawitem.c
ltt/branches/poly/lttv/modules/gui/controlflow/drawitem.h
ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c
ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/callbacks.c

index eff2bd6c1410f0a56ab6d83e180f37c4e124b19c..5cc6fa1f09f58a6e9231a406b092600ad1b8a725 100644 (file)
@@ -4,7 +4,9 @@ Contributors :
 
 Michel Dagenais (New trace format, lttv main)
 Mathieu Desnoyers (Directory structure, build with automake/conf,
-                   lttv gui, control flow view)
+                   lttv gui, control flow view, gui green threads
+                   with interruptible foreground and background computation,
+                   detailed event list)
 Benoit Des Ligneris (Cluster adaptation)
 Xang-Xiu Yang (new trace reading library and converter, lttv gui, 
                detailed event list and statistics view)
index 9445141e337fc82f92fcfd15223226e87bf98f80..2c72660a4b900a12e927b7f45eca73e678573ecf 100644 (file)
 gboolean draw_text( void *hook_data, void *call_data)
 {
   PropertiesText *Properties = (PropertiesText*)hook_data;
-  DrawContext *Draw_Context = (DrawContext*)call_data;
+  DrawContext *draw_context = (DrawContext*)call_data;
 
   PangoContext *context;
   PangoLayout *layout;
   PangoAttribute *attribute;
-  PangoFontDescription *FontDesc;// = pango_font_description_new();
-  gint Font_Size;
+  PangoFontDescription *font_desc;// = pango_font_description_new();
+  gint font_size;
   PangoRectangle ink_rect;
     
-  layout = Draw_Context->pango_layout;
+  layout = draw_context->pango_layout;
 
   context = pango_layout_get_context(layout);
-  FontDesc = pango_context_get_font_description(context);
+  font_desc = pango_context_get_font_description(context);
 
-  pango_font_description_set_size(FontDesc, Properties->size*PANGO_SCALE);
+  pango_font_description_set_size(font_desc, Properties->size*PANGO_SCALE);
   pango_layout_context_changed(layout);
 
   pango_layout_set_text(layout, Properties->text, -1);
   pango_layout_get_pixel_extents(layout, &ink_rect, NULL);
   switch(Properties->position) {
     case OVER:
-              gdk_draw_layout_with_colors(Draw_Context->drawable,
-                Draw_Context->gc,
-                Draw_Context->current->modify_over->x,
-                Draw_Context->current->modify_over->y,
+              gdk_draw_layout_with_colors(draw_context->drawable,
+                draw_context->gc,
+                draw_context->drawinfo.modify_over.x,
+                draw_context->drawinfo.modify_over.y,
                 layout, Properties->foreground, Properties->background);
-              Draw_Context->current->modify_over->x += ink_rect.width;
+              draw_context->drawinfo.modify_over.x += ink_rect.width;
 
       break;
     case MIDDLE:
-              gdk_draw_layout_with_colors(Draw_Context->drawable,
-                Draw_Context->gc,
-                Draw_Context->current->modify_middle->x,
-                Draw_Context->current->modify_middle->y,
+              gdk_draw_layout_with_colors(draw_context->drawable,
+                draw_context->gc,
+                draw_context->drawinfo.modify_middle.x,
+                draw_context->drawinfo.modify_middle.y,
                 layout, Properties->foreground, Properties->background);
-              Draw_Context->current->modify_middle->x += ink_rect.width;
+              draw_context->drawinfo.modify_middle.x += ink_rect.width;
       break;
     case UNDER:
-              gdk_draw_layout_with_colors(Draw_Context->drawable,
-                Draw_Context->gc,
-                Draw_Context->current->modify_under->x,
-                Draw_Context->current->modify_under->y,
+              gdk_draw_layout_with_colors(draw_context->drawable,
+                draw_context->gc,
+                draw_context->drawinfo.modify_under.x,
+                draw_context->drawinfo.modify_under.y,
                 layout, Properties->foreground, Properties->background);
-              Draw_Context->current->modify_under->x += ink_rect.width;
+              draw_context->drawinfo.modify_under.x += ink_rect.width;
       break;
   }
 
@@ -170,15 +170,15 @@ gboolean draw_text( void *hook_data, void *call_data)
  */
 gboolean draw_icon( void *hook_data, void *call_data)
 {
-  PropertiesIcon *Properties = (PropertiesIcon*)hook_data;
-  DrawContext *Draw_Context = (DrawContext*)call_data;
+  PropertiesIcon *properties = (PropertiesIcon*)hook_data;
+  DrawContext *draw_context = (DrawContext*)call_data;
 
   LttvIAttribute *attributes = LTTV_IATTRIBUTE(lttv_global_attributes());
   LttvAttributeValue value;
   gchar icon_name[MAX_PATH_LEN] = "icons/";
   IconStruct *icon_info;
 
-  strcat(icon_name, Properties->icon_name);
+  strcat(icon_name, properties->icon_name);
   
   g_assert(lttv_iattribute_find_by_path(attributes, icon_name,
       LTTV_POINTER, &value));
@@ -186,118 +186,118 @@ gboolean draw_icon( void *hook_data, void *call_data)
   {
     *(value.v_pointer) = icon_info = g_new(IconStruct,1);
     
-    icon_info->pixmap = gdk_pixmap_create_from_xpm(Draw_Context->drawable,
-                          &icon_info->mask, NULL, Properties->icon_name);
+    icon_info->pixmap = gdk_pixmap_create_from_xpm(draw_context->drawable,
+                          &icon_info->mask, NULL, properties->icon_name);
   }
   else
   {
     icon_info = *(value.v_pointer);
   }
   
-  gdk_gc_set_clip_mask(Draw_Context->gc, icon_info->mask);
+  gdk_gc_set_clip_mask(draw_context->gc, icon_info->mask);
   
-  switch(Properties->position) {
+  switch(properties->position) {
     case OVER:
               gdk_gc_set_clip_origin(
-                  Draw_Context->gc,
-                  Draw_Context->current->modify_over->x,
-                  Draw_Context->current->modify_over->y);
-              gdk_draw_drawable(Draw_Context->drawable, 
-                  Draw_Context->gc,
+                  draw_context->gc,
+                  draw_context->drawinfo.modify_over.x,
+                  draw_context->drawinfo.modify_over.y);
+              gdk_draw_drawable(draw_context->drawable, 
+                  draw_context->gc,
                   icon_info->pixmap,
                   0, 0,
-                  Draw_Context->current->modify_over->x,
-                  Draw_Context->current->modify_over->y,
-                  Properties->width, Properties->height);
+                  draw_context->drawinfo.modify_over.x,
+                  draw_context->drawinfo.modify_over.y,
+                  properties->width, properties->height);
 
-              Draw_Context->current->modify_over->x += Properties->width;
+              draw_context->drawinfo.modify_over.x += properties->width;
 
       break;
     case MIDDLE:
               gdk_gc_set_clip_origin(
-                  Draw_Context->gc,
-                  Draw_Context->current->modify_middle->x,
-                  Draw_Context->current->modify_middle->y);
-              gdk_draw_drawable(Draw_Context->drawable, 
-                  Draw_Context->gc,
+                  draw_context->gc,
+                  draw_context->drawinfo.modify_middle.x,
+                  draw_context->drawinfo.modify_middle.y);
+              gdk_draw_drawable(draw_context->drawable, 
+                  draw_context->gc,
                   icon_info->pixmap,
                   0, 0,
-                  Draw_Context->current->modify_middle->x,
-                  Draw_Context->current->modify_middle->y,
-                  Properties->width, Properties->height);
+                  draw_context->drawinfo.modify_middle.x,
+                  draw_context->drawinfo.modify_middle.y,
+                  properties->width, properties->height);
 
-              Draw_Context->current->modify_middle->x += Properties->width;
+              draw_context->drawinfo.modify_middle.x += properties->width;
       break;
     case UNDER:
               gdk_gc_set_clip_origin(
-                  Draw_Context->gc,
-                  Draw_Context->current->modify_under->x,
-                  Draw_Context->current->modify_under->y);
-              gdk_draw_drawable(Draw_Context->drawable, 
-                  Draw_Context->gc,
+                  draw_context->gc,
+                  draw_context->drawinfo.modify_under.x,
+                  draw_context->drawinfo.modify_under.y);
+              gdk_draw_drawable(draw_context->drawable, 
+                  draw_context->gc,
                   icon_info->pixmap,
                   0, 0,
-                  Draw_Context->current->modify_under->x,
-                  Draw_Context->current->modify_under->y,
-                  Properties->width, Properties->height);
+                  draw_context->drawinfo.modify_under.x,
+                  draw_context->drawinfo.modify_under.y,
+                  properties->width, properties->height);
 
-              Draw_Context->current->modify_under->x += Properties->width;
+              draw_context->drawinfo.modify_under.x += properties->width;
       break;
   }
 
-  gdk_gc_set_clip_origin(Draw_Context->gc, 0, 0);
-  gdk_gc_set_clip_mask(Draw_Context->gc, NULL);
+  gdk_gc_set_clip_origin(draw_context->gc, 0, 0);
+  gdk_gc_set_clip_mask(draw_context->gc, NULL);
   
   return 0;
 }
 
 gboolean draw_line( void *hook_data, void *call_data)
 {
-  PropertiesLine *Properties = (PropertiesLine*)hook_data;
-  DrawContext *Draw_Context = (DrawContext*)call_data;
-  //GdkGC *gc = gdk_gc_new(Draw_Context->drawable);
+  PropertiesLine *properties = (PropertiesLine*)hook_data;
+  DrawContext *draw_context = (DrawContext*)call_data;
+  //GdkGC *gc = gdk_gc_new(draw_context->drawable);
   
-  //gdk_gc_set_foreground(Draw_Context->gc, Properties->color);
-  gdk_gc_set_rgb_fg_color(Draw_Context->gc, Properties->color);
-  //gdk_gc_set_foreground(gc, Properties->color);
-  gdk_gc_set_line_attributes( Draw_Context->gc,
-                              Properties->line_width,
-                              Properties->style,
+  //gdk_gc_set_foreground(draw_context->gc, properties->color);
+  gdk_gc_set_rgb_fg_color(draw_context->gc, &properties->color);
+  //gdk_gc_set_foreground(gc, properties->color);
+  gdk_gc_set_line_attributes( draw_context->gc,
+                              properties->line_width,
+                              properties->style,
                               GDK_CAP_BUTT,
                               GDK_JOIN_MITER);
   //g_critical("DRAWING LINE : x1: %i, y1: %i, x2:%i, y2:%i", 
-  //    Draw_Context->previous->middle->x,
-  //    Draw_Context->previous->middle->y,
-  //    Draw_Context->current->middle->x,
-  //    Draw_Context->current->middle->y);
+  //    draw_context->previous->middle->x,
+  //    draw_context->previous->middle->y,
+  //    draw_context->drawinfo.middle.x,
+  //    draw_context->drawinfo.middle.y);
 
-  switch(Properties->position) {
+  switch(properties->position) {
     case OVER:
               drawing_draw_line(
-                NULL, Draw_Context->drawable,
-                Draw_Context->previous->over->x,
-                Draw_Context->previous->over->y,
-                Draw_Context->current->over->x,
-                Draw_Context->current->over->y,
-                Draw_Context->gc);
+                NULL, draw_context->drawable,
+                draw_context->previous->over->x,
+                draw_context->previous->over->y,
+                draw_context->drawinfo.over.x,
+                draw_context->current->over->y,
+                draw_context->gc);
       break;
     case MIDDLE:
               drawing_draw_line(
-                NULL, Draw_Context->drawable,
-                Draw_Context->previous->middle->x,
-                Draw_Context->previous->middle->y,
-                Draw_Context->current->middle->x,
-                Draw_Context->current->middle->y,
-                Draw_Context->gc);
+                NULL, draw_context->drawable,
+                draw_context->previous->middle->x,
+                draw_context->previous->middle->y,
+                draw_context->drawinfo.middle.x,
+                draw_context->drawinfo.middle.y,
+                draw_context->gc);
       break;
     case UNDER:
               drawing_draw_line(
-                NULL, Draw_Context->drawable,
-                Draw_Context->previous->under->x,
-                Draw_Context->previous->under->y,
-                Draw_Context->current->under->x,
-                Draw_Context->current->under->y,
-                Draw_Context->gc);
+                NULL, draw_context->drawable,
+                draw_context->previous->under->x,
+                draw_context->previous->under->y,
+                draw_context->drawinfo.under.x,
+                draw_context->drawinfo.under.y,
+                draw_context->gc);
 
       break;
   }
@@ -309,37 +309,37 @@ gboolean draw_line( void *hook_data, void *call_data)
 
 gboolean draw_arc( void *hook_data, void *call_data)
 {
-  PropertiesArc *Properties = (PropertiesArc*)hook_data;
-  DrawContext *Draw_Context = (DrawContext*)call_data;
+  PropertiesArc *properties = (PropertiesArc*)hook_data;
+  DrawContext *draw_context = (DrawContext*)call_data;
 
-  //gdk_gc_set_foreground(Draw_Context->gc, Properties->color);
-  gdk_gc_set_rgb_fg_color(Draw_Context->gc, Properties->color);
+  //gdk_gc_set_foreground(draw_context->gc, properties->color);
+  gdk_gc_set_rgb_fg_color(draw_context->gc, properties->color);
 
-  switch(Properties->position) {
+  switch(properties->position) {
     case OVER:
-      gdk_draw_arc(Draw_Context->drawable, Draw_Context->gc,
-              Properties->filled,
-              Draw_Context->current->modify_over->x,
-              Draw_Context->current->modify_over->y,
-              Properties->size, Properties->size, 0, 360*64);
-      Draw_Context->current->modify_over->x += Properties->size;
+      gdk_draw_arc(draw_context->drawable, draw_context->gc,
+              properties->filled,
+              draw_context->drawinfo.modify_over.x,
+              draw_context->drawinfo.modify_over.y,
+              properties->size, properties->size, 0, 360*64);
+      draw_context->drawinfo.modify_over.x += properties->size;
       break;
     case MIDDLE:
-      gdk_draw_arc(Draw_Context->drawable, Draw_Context->gc,
-              Properties->filled,
-              Draw_Context->current->modify_middle->x,
-              Draw_Context->current->modify_middle->y,
-              Properties->size, Properties->size, 0, 360*64);
-      Draw_Context->current->modify_middle->x += Properties->size;
+      gdk_draw_arc(draw_context->drawable, draw_context->gc,
+              properties->filled,
+              draw_context->drawinfo.modify_middle.x,
+              draw_context->drawinfo.modify_middle.y,
+              properties->size, properties->size, 0, 360*64);
+      draw_context->drawinfo.modify_middle.x += properties->size;
       
       break;
     case UNDER:
-      gdk_draw_arc(Draw_Context->drawable, Draw_Context->gc,
-              Properties->filled,
-              Draw_Context->current->modify_under->x,
-              Draw_Context->current->modify_under->y,
-              Properties->size, Properties->size, 0, 360*64);
-      Draw_Context->current->modify_under->x += Properties->size;
+      gdk_draw_arc(draw_context->drawable, draw_context->gc,
+              properties->filled,
+              draw_context->drawinfo.modify_under.x,
+              draw_context->drawinfo.modify_under.y,
+              properties->size, properties->size, 0, 360*64);
+      draw_context->drawinfo.modify_under.x += properties->size;
   
       break;
   }
@@ -350,25 +350,25 @@ gboolean draw_arc( void *hook_data, void *call_data)
 
 gboolean draw_bg( void *hook_data, void *call_data)
 {
-  PropertiesBG *Properties = (PropertiesBG*)hook_data;
-  DrawContext *Draw_Context = (DrawContext*)call_data;
+  PropertiesBG *properties = (PropertiesBG*)hook_data;
+  DrawContext *draw_context = (DrawContext*)call_data;
 
-  //gdk_gc_set_foreground(Draw_Context->gc, Properties->color);
-  gdk_gc_set_rgb_fg_color(Draw_Context->gc, Properties->color);
+  //gdk_gc_set_foreground(draw_context->gc, properties->color);
+  gdk_gc_set_rgb_fg_color(draw_context->gc, properties->color);
 
   //g_critical("DRAWING RECT : x: %i, y: %i, w:%i, h:%i, val1 :%i, val2:%i ", 
-  //    Draw_Context->previous->over->x,
-  //    Draw_Context->previous->over->y,
-  //    Draw_Context->current->over->x - Draw_Context->previous->over->x,
-  //    Draw_Context->previous->under->y-Draw_Context->previous->over->y,
-  //    Draw_Context->current->over->x,
-  //    Draw_Context->previous->over->x);
-  gdk_draw_rectangle(Draw_Context->drawable, Draw_Context->gc,
+  //    draw_context->previous->over->x,
+  //    draw_context->previous->over->y,
+  //    draw_context->drawinfo.over.x - draw_context->previous->over->x,
+  //    draw_context->previous->under->y-draw_context->previous->over->y,
+  //    draw_context->drawinfo.over.x,
+  //    draw_context->previous->over->x);
+  gdk_draw_rectangle(draw_context->drawable, draw_context->gc,
           TRUE,
-          Draw_Context->previous->over->x,
-          Draw_Context->previous->over->y,
-          Draw_Context->current->over->x - Draw_Context->previous->over->x,
-          Draw_Context->previous->under->y-Draw_Context->previous->over->y);
+          draw_context->previous->over->x,
+          draw_context->previous->over->y,
+          draw_context->drawinfo.over.x - draw_context->previous->over->x,
+          draw_context->previous->under->y-draw_context->previous->over->y);
 
   return 0;
 }
index 1fca9ae7482283a0003e9b4fcf017d1ab8e9d0a8..fe46c0629e10512f089fa2aca824513362248646 100644 (file)
@@ -59,6 +59,8 @@ typedef enum _RelPos {
  * when we draw a text, an arc or an icon, while it's unneeded when we
  * draw a line or background.
  *
+ * The modify_* positions are altered by the draw item functions.
+ *
  */
 
 
@@ -67,42 +69,23 @@ struct _DrawContext {
   GdkGC   *gc;
   PangoLayout *pango_layout;
 
-  DrawInfo  *current;
-  DrawInfo  *previous;
-};
+  struct {
+    gint x_start;
+    gint x_end;
 
-/* LttvExecutionState is accessible through the LttvTracefileState. Is has
- * a pointer to the LttvProcessState which points to the top of stack
- * execution state : LttvExecutionState *state.
- *
- * LttvExecutionState contains (useful here):
- * LttvExecutionMode t,
- * LttvExecutionSubmode n,
- * LttvProcessStatus s
- * 
- *
- * LttvTraceState will be used in the case we need the string of the
- * different processes, eventtype_names, syscall_names, trap_names, irq_names.
- *
- * LttvTracefileState also gives the cpu_name and, as it herits from
- * LttvTracefileContext, it gives the LttEvent structure, which is needed
- * to get facility name and event name.
- */
-struct _DrawInfo {
-  ItemInfo  *over;
-  ItemInfo  *middle;
-  ItemInfo  *under;
-  
-  ItemInfo  *modify_over;
-  ItemInfo  *modify_middle;
-  ItemInfo  *modify_under;
-  LttvProcessStatus status;
-};
+    gint y_over;
+    gint y_middle;
+    gint y_under;
 
-struct _ItemInfo {
-  gint  x, y;
+    gint x_modify_over;
+    gint x_modify_middle;
+    gint x_modify_under;
+  } drawinfo;
 };
 
+
+
+
 /*
  * Structure used to keep information about icons.
  */
@@ -163,7 +146,7 @@ struct _PropertiesIcon {
 };
 
 struct _PropertiesLine {
-  GdkColor  *color;
+  GdkColor  color;
   gint    line_width;
   GdkLineStyle  style;
   RelPos    position;
index 19d004b9a32b3664438db8c70fbbd355e635bee0..ed2e3309447c13e5281b267a82b1f7d865524f1d 100644 (file)
@@ -279,6 +279,66 @@ int event_selected_hook(void *hook_data, void *call_data)
   
 }
 
+
+static __inline PropertiesLine prepare_line(LttvProcessState *process)
+{
+  PropertiesLine prop_line;
+  prop_line.line_width = 2;
+  prop_line.style = GDK_LINE_SOLID;
+  prop_line.position = MIDDLE;
+  
+  g_debug("prepare_line for state : %s", g_quark_to_string(process->state->s));
+
+  /* color of line : status of the process */
+  if(process->state->s == LTTV_STATE_UNNAMED)
+  {
+    prop_line.color.red = 0xffff;
+    prop_line.color.green = 0xffff;
+    prop_line.color.blue = 0xffff;
+  }
+  else if(process->state->s == LTTV_STATE_WAIT_FORK)
+  {
+    prop_line.color.red = 0x0fff;
+    prop_line.color.green = 0xffff;
+    prop_line.color.blue = 0xfff0;
+  }
+  else if(process->state->s == LTTV_STATE_WAIT_CPU)
+  {
+    prop_line.color.red = 0xffff;
+    prop_line.color.green = 0xffff;
+    prop_line.color.blue = 0x0000;
+  }
+  else if(process->state->s == LTTV_STATE_EXIT)
+  {
+    prop_line.color.red = 0xffff;
+    prop_line.color.green = 0x0000;
+    prop_line.color.blue = 0xffff;
+  }
+  else if(process->state->s == LTTV_STATE_WAIT)
+  {
+    prop_line.color.red = 0xffff;
+    prop_line.color.green = 0x0000;
+    prop_line.color.blue = 0x0000;
+  }
+  else if(process->state->s == LTTV_STATE_RUN)
+  {
+    prop_line.color.red = 0x0000;
+    prop_line.color.green = 0xffff;
+    prop_line.color.blue = 0x0000;
+  }
+  else
+  {
+    prop_line.color.red = 0xffff;
+    prop_line.color.green = 0xffff;
+    prop_line.color.blue = 0xffff;
+  }
+  
+  return prop_line;
+
+}
+
+
+
 /* draw_before_hook
  * 
  * This function basically draw lines and icons. Two types of lines are drawn :
@@ -301,6 +361,7 @@ int draw_before_hook(void *hook_data, void *call_data)
 {
   EventsRequest *events_request = (EventsRequest*)hook_data;
   ControlFlowData *control_flow_data = events_request->viewer_data;
+  Drawing_t *drawing = control_flow_data->drawing;
 
   LttvTracefileContext *tfc = (LttvTracefileContext *)call_data;
 
@@ -321,7 +382,7 @@ int draw_before_hook(void *hook_data, void *call_data)
         || ltt_time_compare(evtime, end_time) == 1)
             return;
 
-  guint width = control_flow_data->drawing->width;
+  guint width = drawing->width;
 
   if(strcmp(ltt_eventtype_name(ltt_event_eventtype(e)),"schedchange") == 0) {
 
@@ -355,7 +416,7 @@ int draw_before_hook(void *hook_data, void *call_data)
        * or add it, and draw its items.
        */
        /* Add process to process list (if not present) */
-      guint y_out = 0, height = 0, pl_height = 0;
+      guint y = 0, height = 0, pl_height = 0;
       HashedProcessData *hashed_process_data = NULL;
       ProcessList *process_list = 
                       guicontrolflow_get_process_list(control_flow_data);
@@ -366,7 +427,7 @@ int draw_before_hook(void *hook_data, void *call_data)
               pid_out,
               &birth,
               tfc->t_context->index,
-              &y_out,
+              &y,
               &height,
               &hashed_process_data) == 1)
       {
@@ -382,10 +443,10 @@ int draw_before_hook(void *hook_data, void *call_data)
                 pid_out,
                 &birth,
                 tfc->t_context->index,
-                &y_out,
+                &y,
                 &height,
                 &hashed_process_data);
-        drawing_insert_square( control_flow_data->drawing, y_out, height);
+        drawing_insert_square( drawing, y, height);
       }
     
       /* Now, the process is in the state hash and our own process hash.
@@ -398,8 +459,39 @@ int draw_before_hook(void *hook_data, void *call_data)
        * value.
        */
       g_assert(hashed_process_data->x != -1);
-      
-   
+      {
+        guint x;
+        DrawContext draw_context;
+
+        convert_time_to_pixels(
+            time_window.start_time,
+            end_time,
+            evtime,
+            width,
+            &x);
+
+        /* Now create the drawing context that will be used to draw
+         * items related to the last state. */
+        draw_context.drawable = drawing->pixmap;
+        draw_context.gc = drawing->gc;
+        draw_context.pango_layout = drawing->pango_layout;
+        draw_context.drawinfo.x_start = hashed_process_data->x;
+        draw_context.drawinfo.x_end = x;
+
+        draw_context.drawinfo.y_over = y;
+        draw_context.drawinfo.y_middle = y+(height/4);
+        draw_context.drawinfo.y_under = y+(height/2)+2;
+
+        draw_context.drawinfo.x_modify_over = hashed_process_data->x;
+        draw_context.drawinfo.x_modify_middle = hashed_process_data->x;
+        draw_context.drawinfo.x_modify_under = hashed_process_data->x;
+
+        {
+          /* Draw the line */
+          PropertiesLine prop_line = prepare_line(process);
+          draw_line((void*)&prop_line, (void*)&draw_context);
+        }
+      }
     }
   }
 
@@ -407,7 +499,6 @@ int draw_before_hook(void *hook_data, void *call_data)
   return 0;
 
 
-
 #if 0
   EventsRequest *events_request = (EventsRequest*)hook_data;
   ControlFlowData *control_flow_data = 
index b0d4b4cacfdc937da48edcb6d0937e04d893e5b6..c101c9c6c792d2624db211943c42fca489ab98c6 100644 (file)
@@ -2896,26 +2896,39 @@ on_about_activate                      (GtkMenuItem     *menuitem,
     
   /* Text to show */
   GtkWidget *label1 = gtk_label_new("");
+  gtk_misc_set_padding(GTK_MISC(label1), 10, 20);
   gtk_label_set_markup(GTK_LABEL(label1), "\
-Linux Trace Toolkit");
+<big>Linux Trace Toolkit</big>");
   gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_CENTER);
   
   GtkWidget *label2 = gtk_label_new("");
+  gtk_misc_set_padding(GTK_MISC(label2), 10, 20);
   gtk_label_set_markup(GTK_LABEL(label2), "\
-\n\n\
 Project author: Karim Yaghmour\n\
 \n\
 Contributors :\n\
 \n\
 Michel Dagenais (New trace format, lttv main)\n\
 Mathieu Desnoyers (Directory structure, build with automake/conf,\n\
-                   lttv gui, control flow view)\n\
+                   lttv gui, control flow view, gui green threads\n\
+                   with interruptible foreground and background computation,\n\
+                   detailed event list)\n\
 Benoit Des Ligneris (Cluster adaptation)\n\
 Xang-Xiu Yang (new trace reading library and converter, lttv gui, \n\
                detailed event list and statistics view)\n\
 Tom Zanussi (RelayFS)");
+
+  GtkWidget *label3 = gtk_label_new("");
+  gtk_label_set_markup(GTK_LABEL(label3), "\
+Linux Trace Toolkit, Copyright (C) 2004  Karim Yaghmour\n\
+Linux Trace Toolkit comes with ABSOLUTELY NO WARRANTY.\n\
+This is free software, and you are welcome to redistribute it\n\
+under certain conditions. See COPYING for details.");
+  gtk_misc_set_padding(GTK_MISC(label3), 10, 20);
+
   gtk_box_pack_start_defaults(GTK_BOX(vbox), label1);
   gtk_box_pack_start_defaults(GTK_BOX(vbox), label2);
+  gtk_box_pack_start_defaults(GTK_BOX(vbox), label3);
 
   GtkWidget *hbox = gtk_hbox_new(TRUE, 0);
   gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
This page took 0.038225 seconds and 4 git commands to generate.