fix libltt error messages
[lttv.git] / ltt / branches / poly / lttv / modules / gui / controlflow / eventhooks.c
index cc152eef16015b3fe171f5bd3e9bc907643fa878..e2a42d4fea5a5fa6c4a718c5b17387f448572d9c 100644 (file)
@@ -88,7 +88,7 @@ extern GSList *g_legend_list;
  * Wait for all the awaited computations to be over.
  */
 
-gint background_ready(void *hook_data, void *call_data)
+static gint background_ready(void *hook_data, void *call_data)
 {
   ControlFlowData *control_flow_data = (ControlFlowData *)hook_data;
   LttvTrace *trace = (LttvTrace*)call_data;
@@ -113,7 +113,7 @@ gint background_ready(void *hook_data, void *call_data)
 /* Request background computation. Verify if it is in progress or ready first.
  * Only for each trace in the tab's traceset.
  */
-void request_background_data(ControlFlowData *control_flow_data)
+static void request_background_data(ControlFlowData *control_flow_data)
 {
   LttvTracesetContext * tsc =
         lttvwindow_get_traceset_context(control_flow_data->tab);
@@ -138,9 +138,8 @@ void request_background_data(ControlFlowData *control_flow_data)
          * information. Happens when two viewers ask for it before servicing
          * starts.
          */
-        lttvwindowtraces_background_request_remove(trace, "state");
-        lttvwindowtraces_background_request_queue(trace,
-                                                  "state");
+        if(!lttvwindowtraces_background_request_find(trace, "state"))
+          lttvwindowtraces_background_request_queue(trace, "state");
         lttvwindowtraces_background_notify_queue(control_flow_data,
                                                  trace,
                                                  ltt_time_infinite,
@@ -183,7 +182,7 @@ GtkWidget *
 h_guicontrolflow(Tab *tab)
 {
   g_info("h_guicontrolflow, %p", tab);
-  ControlFlowData *control_flow_data = guicontrolflow() ;
+  ControlFlowData *control_flow_data = guicontrolflow(tab) ;
   
   control_flow_data->tab = tab;
   
@@ -1915,8 +1914,10 @@ gint update_time_window_hook(void *hook_data, void *call_data)
         control_flow_data->drawing->height);
   }
 
+  /* Update directly when scrolling */
+  gdk_window_process_updates(control_flow_data->drawing->drawing_area->window,
+      TRUE);
 
-  
   return 0;
 }
 
@@ -1925,6 +1926,12 @@ gint traceset_notify(void *hook_data, void *call_data)
   ControlFlowData *control_flow_data = (ControlFlowData*) hook_data;
   Drawing_t *drawing = control_flow_data->drawing;
 
+  if(unlikely(drawing->gc == NULL)) {
+    return FALSE;
+  }
+  if(drawing->dotted_gc == NULL) {
+    return FALSE;
+  }
 
   drawing_clear(control_flow_data->drawing);
   processlist_clear(control_flow_data->process_list);
@@ -2077,8 +2084,11 @@ gint update_current_time_hook(void *hook_data, void *call_data)
     
   }
   gtk_widget_queue_draw(control_flow_data->drawing->drawing_area);
-                             
   
+  /* Update directly when scrolling */
+  gdk_window_process_updates(control_flow_data->drawing->drawing_area->window,
+      TRUE);
+                             
   return 0;
 }
 
This page took 0.023088 seconds and 4 git commands to generate.