fixed some drawing details
authorcompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Sat, 10 Jan 2004 17:05:15 +0000 (17:05 +0000)
committercompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Sat, 10 Jan 2004 17:05:15 +0000 (17:05 +0000)
git-svn-id: http://ltt.polymtl.ca/svn@369 04897980-b3bd-0310-b5e0-8ef037075253

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/Process_List.c
ltt/branches/poly/lttv/modules/guiControlFlow/Process_List.h

index 97444fc0604a4cd92673a8d83c118a0dca974b8f..bb551dc166ca6592339c2b80404921149a801bc3 100644 (file)
@@ -14,7 +14,6 @@
 #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)
 
-
 /*****************************************************************************
  *                              Drawing functions                            *
  *****************************************************************************/
@@ -43,6 +42,8 @@ static GdkColor CF_Colors [] =
 
 /* Function responsible for updating the exposed area.
  * It must call processTrace() to ask for this update.
+ * Note : this function cannot clear the background, because it may
+ * erase drawing already present (SAFETY).
  */
 void drawing_data_request(Drawing_t *Drawing,
                        GdkPixmap **Pixmap,
@@ -83,14 +84,7 @@ void drawing_data_request(Drawing_t *Drawing,
        LttvTracesetContext * tsc =
                                get_traceset_context(control_flow_data->Parent_Window);
        
-  gdk_draw_rectangle (*Pixmap,
-                     Drawing->Drawing_Area_V->style->white_gc,
-                     TRUE,
-                     x, y,
-                     width,    // do not overlap
-                     height);
-
-  //send_test_process(
+    //send_test_process(
        //guicontrolflow_get_process_list(Drawing->Control_Flow_Data),
        //Drawing);
   //send_test_drawing(
@@ -146,8 +140,8 @@ configure_event( GtkWidget *widget, GdkEventConfigure *event,
                
   /* New Pixmap, size of the configure event */
   GdkPixmap *Pixmap = gdk_pixmap_new(widget->window,
-                         widget->allocation.width,
-                         widget->allocation.height,
+                         widget->allocation.width + SAFETY,
+                         widget->allocation.height + SAFETY,
                          -1);
        
   g_critical("drawing configure event");
@@ -157,18 +151,29 @@ configure_event( GtkWidget *widget, GdkEventConfigure *event,
   {
        Drawing->Pixmap = gdk_pixmap_new(
                widget->window,
-               widget->allocation.width,
-               widget->allocation.height,
+               widget->allocation.width + SAFETY,
+               widget->allocation.height + SAFETY,
                //ProcessList_get_height
                // (GuiControlFlow_get_Process_List(Drawing->Control_Flow_Data)),
                -1);
-       Drawing->width = widget->allocation.width;
-       Drawing->height = widget->allocation.height;
-g_critical("init data");
-       /* Initial data request */
-       drawing_data_request(Drawing, &Drawing->Pixmap, 0, 0,
+               Drawing->width = widget->allocation.width;
+               Drawing->height = widget->allocation.height;
+
+               // Clear the image
+         gdk_draw_rectangle (Drawing->Pixmap,
+                     widget->style->white_gc,
+                     TRUE,
+                     0, 0,
+                     widget->allocation.width+SAFETY,
+                     widget->allocation.height+SAFETY);
+
+               g_info("init data request");
+
+
+               /* Initial data request */
+               drawing_data_request(Drawing, &Drawing->Pixmap, 0, 0,
                        widget->allocation.width,
-                       widget->allocation.height);
+                               widget->allocation.height);
 
   }
 //  /* Draw empty background */ 
@@ -191,11 +196,33 @@ g_critical("init data");
     gdk_pixmap_unref(Drawing->Pixmap);
 
   Drawing->Pixmap = Pixmap;
+               
+       // Clear the bottom part of the image (SAFETY)
+  gdk_draw_rectangle (Pixmap,
+                     widget->style->white_gc,
+                     TRUE,
+                     0, Drawing->height+SAFETY,
+                     Drawing->width+SAFETY,    // do not overlap
+                     (widget->allocation.height) - Drawing->height);
+       // Clear the right part of the image (SAFETY)
+  gdk_draw_rectangle (Pixmap,
+                     widget->style->white_gc,
+                     TRUE,
+                     Drawing->width+SAFETY, 0,
+                     (widget->allocation.width) - Drawing->width,      // do not overlap
+                     Drawing->height+SAFETY);
 
-   /* Request data for missing space */
-g_critical("missing data");
-   drawing_data_request(Drawing, &Pixmap, Drawing->width, 0,
-                       widget->allocation.width - Drawing->width,
+       /* Clear the backgound for data request, but not SAFETY */
+       gdk_draw_rectangle (Pixmap,
+                                       Drawing->Drawing_Area_V->style->white_gc,
+                     TRUE,
+                     Drawing->width + SAFETY, 0,
+                     widget->allocation.width - Drawing->width,        // do not overlap
+                     widget->allocation.height+SAFETY);
+  /* Request data for missing space */
+       g_info("missing data request");
+  drawing_data_request(Drawing, &Pixmap, Drawing->width, 0,
+               widget->allocation.width - Drawing->width,
                        widget->allocation.height);
         // we do not request data vertically!
 //   drawing_data_request(Drawing, &Pixmap, 0, Drawing->height,
@@ -209,15 +236,6 @@ g_critical("missing data");
 //                   widget->allocation.width -
 //                                     Drawing->width,
 //                   widget->allocation.height);
-               
-               // Clear the bottom part of the image
-    gdk_draw_rectangle (Pixmap,
-                     widget->style->white_gc,
-                     TRUE,
-                     0, Drawing->height,
-                     Drawing->width,   // do not overlap
-                     widget->allocation.height -       Drawing->height);
   Drawing->width = widget->allocation.width;
   Drawing->height = widget->allocation.height;
 
@@ -410,8 +428,8 @@ void drawing_insert_square(Drawing_t *Drawing,
 
        /* Allocate a new pixmap with new height */
        GdkPixmap *Pixmap = gdk_pixmap_new(Drawing->Drawing_Area_V->window,
-                         Drawing->width,
-                         Drawing->height + height,
+                         Drawing->width + SAFETY,
+                         Drawing->height + height + SAFETY,
                          -1);
        
        /* Copy the high region */
@@ -420,7 +438,7 @@ void drawing_insert_square(Drawing_t *Drawing,
                Drawing->Pixmap,
                0, 0,
                0, 0,
-               Drawing->width, y);
+               Drawing->width + SAFETY, y);
 
 
 
@@ -430,7 +448,7 @@ void drawing_insert_square(Drawing_t *Drawing,
                Drawing->Drawing_Area_V->style->black_gc,
                TRUE,
                0, y,
-               Drawing->width, // do not overlap
+               Drawing->width + SAFETY,        // do not overlap
                height);
 
 
@@ -441,7 +459,7 @@ void drawing_insert_square(Drawing_t *Drawing,
                Drawing->Pixmap,
                0, y,
                0, y + height,
-               Drawing->width, Drawing->height - y);
+               Drawing->width, Drawing->height - y + SAFETY);
 
 
 
@@ -472,8 +490,8 @@ void drawing_remove_square(Drawing_t *Drawing,
        /* Allocate a new pixmap with new height */
        GdkPixmap *Pixmap = gdk_pixmap_new(
                        Drawing->Drawing_Area_V->window,
-                       Drawing->width,
-                       Drawing->height - height,
+                       Drawing->width + SAFETY,
+                       Drawing->height - height + SAFETY,
                        -1);
        
        /* Copy the high region */
@@ -482,7 +500,7 @@ void drawing_remove_square(Drawing_t *Drawing,
                Drawing->Pixmap,
                0, 0,
                0, 0,
-               Drawing->width, y);
+               Drawing->width + SAFETY, y);
 
 
 
@@ -492,7 +510,7 @@ void drawing_remove_square(Drawing_t *Drawing,
                Drawing->Pixmap,
                0, y + height,
                0, y,
-               Drawing->width, Drawing->height - y - height);
+               Drawing->width, Drawing->height - y - height + SAFETY);
 
 
        if (Drawing->Pixmap)
index 279c402fe442a14249ab67f3a0529e9785d3a894..f225e225525c65b4ef2a148fc77d8c11f79eab8d 100644 (file)
@@ -8,6 +8,9 @@
 #include "CFV.h"
 #include "Draw_Item.h"
 
+
+#define SAFETY 50      // safety pixels at right and bottom of pixmap buffer
+
 /* This part of the viewer does :
  * Draw horizontal lines, getting graphic context as arg.
  * Copy region of the screen into another.
index 6167639ccac595896ce76a6cb346557341bc5d90..adc6d8a05d471b56db48a6d0324b2e3df872f0e5 100644 (file)
@@ -532,6 +532,7 @@ int draw_event_hook(void *hook_data, void *call_data)
         * process position */
        guint pid = tfs->process->pid;
        LttTime birth = tfs->process->creation_time;
+       gchar *name = strdup("name");
        guint y = 0, height = 0, pl_height = 0;
        HashedProcessData *Hashed_Process_Data = NULL;
 
@@ -549,8 +550,10 @@ int draw_event_hook(void *hook_data, void *call_data)
                processlist_add(process_list,
                                pid,
                                &birth,
+                               name,
                                &pl_height,
                                &Hashed_Process_Data);
+               g_free(name);
                drawing_insert_square( Event_Request->Control_Flow_Data->Drawing, y, height);
        }
        
@@ -668,8 +671,22 @@ void update_time_window_hook(void *hook_data, void *call_data)
                                  x, 0,
                                  0, 0,
                                  -1, -1);
+                       
+                       convert_time_to_pixels(
+                                       *ns,
+                                       new_end,
+                                       old_end,
+                                       width,
+                                       &x);
 
                        *Old_Time_Window = *New_Time_Window;
+                       /* Clear the data request background, but not SAFETY */
+                       gdk_draw_rectangle (control_flow_data->Drawing->Pixmap,
+                                       control_flow_data->Drawing->Drawing_Area_V->style->white_gc,
+                     TRUE,
+                     x+SAFETY, 0,
+                     control_flow_data->Drawing->width - x,    // do not overlap
+                     control_flow_data->Drawing->height+SAFETY);
                        /* Get new data for the rest. */
                  drawing_data_request(control_flow_data->Drawing,
                                        &control_flow_data->Drawing->Pixmap,
@@ -710,6 +727,14 @@ void update_time_window_hook(void *hook_data, void *call_data)
                                          -1, -1);
        
                                *Old_Time_Window = *New_Time_Window;
+
+                               /* Clean the data request background */
+                               gdk_draw_rectangle (control_flow_data->Drawing->Pixmap,
+                                       control_flow_data->Drawing->Drawing_Area_V->style->white_gc,
+                     TRUE,
+                     0, 0,
+                     x,        // do not overlap
+                     control_flow_data->Drawing->height+SAFETY);
                                /* Get new data for the rest. */
                          drawing_data_request(control_flow_data->Drawing,
                                                &control_flow_data->Drawing->Pixmap,
@@ -726,6 +751,14 @@ void update_time_window_hook(void *hook_data, void *call_data)
                                g_info("scrolling far");
                                /* Cannot reuse any part of the screen : far jump */
                                *Old_Time_Window = *New_Time_Window;
+                               
+
+                               gdk_draw_rectangle (control_flow_data->Drawing->Pixmap,
+                                       control_flow_data->Drawing->Drawing_Area_V->style->white_gc,
+                     TRUE,
+                     0, 0,
+                     control_flow_data->Drawing->width+SAFETY, // do not overlap
+                     control_flow_data->Drawing->height+SAFETY);
 
                                drawing_data_request(control_flow_data->Drawing,
                                                &control_flow_data->Drawing->Pixmap,
@@ -744,7 +777,15 @@ void update_time_window_hook(void *hook_data, void *call_data)
                g_info("zoom");
 
                *Old_Time_Window = *New_Time_Window;
-               
+       
+               gdk_draw_rectangle (control_flow_data->Drawing->Pixmap,
+                                       control_flow_data->Drawing->Drawing_Area_V->style->white_gc,
+                     TRUE,
+                     0, 0,
+                     control_flow_data->Drawing->width+SAFETY, // do not overlap
+                     control_flow_data->Drawing->height+SAFETY);
+
+       
          drawing_data_request(control_flow_data->Drawing,
                                &control_flow_data->Drawing->Pixmap,
                                0, 0,
index 40e189f6383628dfa081c12d1b88ce6e0534509c..37069b1a7bd1f926bac1364f082d5d5717f55454 100644 (file)
@@ -299,6 +299,7 @@ void destroy_hash_data(gpointer data)
 int processlist_add(   ProcessList *Process_List,
                        guint pid,
                        LttTime *birth,
+                       gchar *name,
                        guint *height,
                        HashedProcessData **pmHashed_Process_Data)
 {
@@ -363,7 +364,7 @@ int processlist_add(        ProcessList *Process_List,
        //                              GTK_TREE_MODEL(Process_List->Store_M),
        //                              &iter)));
        gtk_list_store_set (    Process_List->Store_M, &iter,
-                               PROCESS_COLUMN, "name",
+                               PROCESS_COLUMN, name,
                                PID_COLUMN, pid,
                                BIRTH_S_COLUMN, birth->tv_sec,
                                BIRTH_NS_COLUMN, birth->tv_nsec,
index c119fa33bab0d9cf9979c4c38172eb94a354478d..a02e7ab28bcfe3e20221a353fe5ec6bda06d673f 100644 (file)
@@ -56,6 +56,7 @@ GtkWidget *processlist_get_widget(ProcessList *Process_List);
 
 // out : success (0) and height
 int processlist_add(ProcessList *Process_List, guint pid, LttTime *birth,
+               gchar *name,
                guint *height, HashedProcessData **Hashed_Process_Data);
 // out : success (0) and height
 int processlist_remove(ProcessList *Process_List, guint pid, LttTime *birth);
This page took 0.030878 seconds and 4 git commands to generate.