Add member timestamp and cpuid to LttvTracesetPosition to improve the comparaison...
[lttv.git] / lttv / modules / gui / detailedevents / events.c
index 585acbc09b35b2cd937c515d95e84c1f1514b0fc..1c95569a8613e4421da0eb026ed25a433c9bc4c6 100644 (file)
@@ -148,7 +148,6 @@ int event_hook(void *hook_data, void *call_data);
 enum
 {
   TRACE_NAME_COLUMN,
-  TRACEFILE_NAME_COLUMN,
   CPUID_COLUMN,
   EVENT_COLUMN,
   TIME_S_COLUMN,
@@ -234,11 +233,11 @@ gui_events(LttvPluginTab *ptab)
       GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
 
   event_viewer_data->currently_selected_position =
-                               lttv_traceset_create_position(ts);
+                               lttv_traceset_create_current_position(ts);
   event_viewer_data->first_event =
-                               lttv_traceset_create_position(ts);
+                               lttv_traceset_create_current_position(ts);
   event_viewer_data->last_event =
-                               lttv_traceset_create_position(ts);
+                               lttv_traceset_create_current_position(ts);
   event_viewer_data->main_win_filter = lttvwindow_get_filter(tab);
 
   event_viewer_data->update_cursor = TRUE;
@@ -252,7 +251,6 @@ gui_events(LttvPluginTab *ptab)
   event_viewer_data->store_m = gtk_list_store_new (
     N_COLUMNS,      /* Total number of columns     */
     G_TYPE_STRING,  /* Trace name                  */
-    G_TYPE_STRING,  /* Tracefile name              */
     G_TYPE_UINT,    /* CPUID                       */
     G_TYPE_STRING,  /* Event                       */
     G_TYPE_UINT,    /* Time s                      */
@@ -321,19 +319,6 @@ gui_events(LttvPluginTab *ptab)
         G_CALLBACK(header_size_allocate),
         (gpointer)event_viewer_data);
 
-
-  
-  renderer = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes ("Tracefile",
-                 renderer,
-                 "text", TRACEFILE_NAME_COLUMN,
-                 NULL);
-  gtk_tree_view_column_set_alignment (column, 0.0);
-  gtk_tree_view_column_set_fixed_width (column, 120);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (event_viewer_data->tree_v),
-      column);
-
-
   renderer = gtk_cell_renderer_text_new ();
   column = gtk_tree_view_column_new_with_attributes ("CPUID",
                  renderer,
@@ -1390,9 +1375,12 @@ static void get_events(double new_value, EventViewerData *event_viewer_data)
         pos = (LttvTracesetPosition*)g_ptr_array_index(
                                                 event_viewer_data->pos,
                                                 0);
-        lttv_traceset_seek_to_position(pos);
+        lttv_state_traceset_seek_position(ts,pos);
       }
-    } 
+    } else {
+      lttv_state_traceset_seek_time(ts,time);
+
+    }
 
   /* Note that, as we mess with the tsc position, this function CANNOT be called
    * from a hook inside the lttv_process_traceset_middle. */
@@ -1431,7 +1419,7 @@ static void get_events(double new_value, EventViewerData *event_viewer_data)
 
     /* Save the first event position */
 
-    event_viewer_data->first_event = lttv_traceset_create_position(ts);
+    event_viewer_data->first_event = lttv_traceset_create_current_position(ts);
 
     time = ltt_time_from_uint64(lttv_traceset_position_get_timestamp(
                                             event_viewer_data->first_event));
@@ -1441,11 +1429,11 @@ static void get_events(double new_value, EventViewerData *event_viewer_data)
     LttTime time_val = ltt_time_sub(time,time_span.start_time);
     event_viewer_data->previous_value = ltt_time_to_double(time_val);
 
-    lttv_traceset_seek_to_position(event_viewer_data->first_event);
+    lttv_state_traceset_seek_position(ts, event_viewer_data->first_event);
 
   } else {
     /* Seek by time */
-    lttv_traceset_seek_to_position(timePos);
+    lttv_state_traceset_seek_time(ts, time);
 
     
     LttTime time_val = ltt_time_sub(time,time_span.start_time);
@@ -1487,7 +1475,7 @@ static void get_events(double new_value, EventViewerData *event_viewer_data)
                                                event_viewer_data->pos->len - 1);
     event_viewer_data->last_event = cur_pos;
   } else
-        event_viewer_data->last_event =lttv_traceset_create_position(ts);
+        event_viewer_data->last_event =lttv_traceset_create_current_position(ts);
   
   gtk_adjustment_set_value(event_viewer_data->vadjust_c,
       event_viewer_data->previous_value);
@@ -1557,10 +1545,12 @@ int event_hook(void *hook_data, void *call_data)
   GtkTreeIter iter;
 
   GString *desc = g_string_new("");
+  GString *name = g_string_new("");
   
-  LttvTracesetPosition *pos = lttv_traceset_create_position(traceState->trace->traceset);
+  LttvTracesetPosition *pos = lttv_traceset_create_current_position(traceState->trace->traceset);
 
-  lttv_event_to_string(e, desc, TRUE);
+  lttv_event_to_string(e, desc, TRUE, FALSE);
+  lttv_event_get_name(e,name);
 
   g_info("detail : %s", desc->str);
 
@@ -1568,9 +1558,8 @@ int event_hook(void *hook_data, void *call_data)
 
   gtk_list_store_set (event_viewer_data->store_m, &iter,
         TRACE_NAME_COLUMN, "TraceName",
-        TRACEFILE_NAME_COLUMN,"TraceFile" /*traceState->trace->traceset->filename*/,
         CPUID_COLUMN, cpu,
-        EVENT_COLUMN,"EventName" /*bt_ctf_event_name(e->bt_event)*/,
+        EVENT_COLUMN,name->str,
         TIME_S_COLUMN, time.tv_sec,
         TIME_NS_COLUMN, time.tv_nsec,
         PID_COLUMN, process->pid,
@@ -1581,6 +1570,7 @@ int event_hook(void *hook_data, void *call_data)
   g_ptr_array_add(event_viewer_data->pos, pos);
   
   g_string_free(desc, TRUE);
+  g_string_free(name, TRUE);
 
   if(event_viewer_data->update_cursor) {
     if(lttv_traceset_position_compare(pos, 
@@ -1609,6 +1599,9 @@ static void event_update_selection(EventViewerData *event_viewer_data)
   guint i;
   GPtrArray *positions = event_viewer_data->pos;
   g_info("event_update_selection");
+  
+  int isFound = FALSE;
+  
 
   for(i=0;i<positions->len;i++) {
     LttvTracesetPosition *cur_pos = 
@@ -1619,11 +1612,28 @@ static void event_update_selection(EventViewerData *event_viewer_data)
                        if(path) {
              gtk_tree_view_set_cursor(GTK_TREE_VIEW(event_viewer_data->tree_v),
                                     path, NULL, FALSE);
+              gtk_widget_grab_focus(event_viewer_data->tree_v );
              gtk_tree_path_free(path);
+              isFound = TRUE;
               break;
                         }               
     }
   } 
+        if(isFound){
+          return;
+        }
+  /* If the current selection is not in the currently displayed events*/
+  LttTime currentTime = lttv_traceset_position_get_time(
+                                event_viewer_data->currently_selected_position);
+  LttTime time;
+  
+  LttvTraceset * ts = lttvwindow_get_traceset(event_viewer_data->tab);
+  TimeInterval time_span = lttv_traceset_get_time_span_real(ts);
+  time = ltt_time_sub(currentTime, time_span.start_time);
+  gtk_adjustment_set_value(event_viewer_data->vadjust_c,
+                                                ltt_time_to_double(time));
+  gtk_widget_grab_focus(event_viewer_data->tree_v );
+  
 }
 
 static int current_time_get_first_event_hook(void *hook_data, void *call_data)
@@ -1662,8 +1672,7 @@ gboolean update_current_time(void * hook_data, void * call_data)
   EventViewerData *event_viewer_data = (EventViewerData*) hook_data;
  
   const LttTime * current_time = (LttTime*)call_data;
-  LttvTraceset * ts =
-        lttvwindow_get_traceset(event_viewer_data->tab);
+  LttvTraceset * ts = lttvwindow_get_traceset(event_viewer_data->tab);
   
   /* If the currently selected event time != current time, set the first event
    * with this time as currently selected. */
@@ -1671,17 +1680,14 @@ gboolean update_current_time(void * hook_data, void * call_data)
                         event_viewer_data->currently_selected_position);
      
   if(ltt_time_compare(pos_time, *current_time) != 0) {
-   
         /*create position*/
         LttvTracesetPosition *currentPosition = 
                         lttv_traceset_create_time_position(ts,*current_time );
         /*seek to current position*/
-        lttv_traceset_seek_to_position(currentPosition);
+        lttv_state_traceset_seek_time(ts, *current_time);
     
     event_viewer_data->currently_selected_position = 
-                                        lttv_traceset_create_position(ts);
-
-
+                                        lttv_traceset_create_current_position(ts);
   }
 
   event_viewer_data->report_position = FALSE;
@@ -1750,15 +1756,16 @@ gboolean traceset_changed(void * hook_data, void * call_data)
   lttv_traceset_destroy_position(event_viewer_data->currently_selected_position);
   lttv_traceset_destroy_position(event_viewer_data->first_event);
   lttv_traceset_destroy_position(event_viewer_data->last_event);
+  
   event_viewer_data->currently_selected_position =
-                                lttv_traceset_create_position(ts);
+                                lttv_traceset_create_current_position(ts);
   event_viewer_data->first_event =
-                                lttv_traceset_create_position(ts);
+                                lttv_traceset_create_current_position(ts);
   event_viewer_data->last_event =
-                                lttv_traceset_create_position(ts);
+                                lttv_traceset_create_current_position(ts);
 
   get_events(event_viewer_data->vadjust_c->value, event_viewer_data);
+
 #endif //babel_cleanup
   //  event_viewer_data->vadjust_c->value = 0;
 
This page took 0.02557 seconds and 4 git commands to generate.