add softirq mode
[lttv.git] / ltt / branches / poly / lttv / modules / gui / controlflow / eventhooks.c
index 05e3f43e7f88836b24a3d8efc6bc54e46ef42b3a..22015eafffe26e5a10d6878ff023c651847134e6 100644 (file)
@@ -139,7 +139,8 @@ static void request_background_data(ControlFlowData *control_flow_data)
          * starts.
          */
         if(!lttvwindowtraces_background_request_find(trace, "state"))
-          lttvwindowtraces_background_request_queue(trace, "state");
+          lttvwindowtraces_background_request_queue(
+              main_window_get_widget(control_flow_data->tab), trace, "state");
         lttvwindowtraces_background_notify_queue(control_flow_data,
                                                  trace,
                                                  ltt_time_infinite,
@@ -157,7 +158,7 @@ static void request_background_data(ControlFlowData *control_flow_data)
       }
     } else {
       /* Data ready. Be its nature, this viewer doesn't need to have
-       * its data ready hook called htere, because a background
+       * its data ready hook called there, because a background
        * request is always linked with a redraw.
        */
     }
@@ -182,7 +183,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;
   
@@ -278,6 +279,8 @@ static inline PropertiesLine prepare_s_e_line(LttvProcessState *process)
       prop_line.color = drawing_colors[COL_RUN_TRAP];
     else if(process->state->t == LTTV_STATE_IRQ)
       prop_line.color = drawing_colors[COL_RUN_IRQ];
+    else if(process->state->t == LTTV_STATE_SOFT_IRQ)
+      prop_line.color = drawing_colors[COL_RUN_SOFT_IRQ];
     else if(process->state->t == LTTV_STATE_MODE_UNKNOWN)
       prop_line.color = drawing_colors[COL_MODE_UNKNOWN];
     else
@@ -1914,8 +1917,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;
 }
 
@@ -1924,6 +1929,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);
@@ -2076,8 +2087,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.025204 seconds and 4 git commands to generate.