More intermediate cleanup
[lttv.git] / ltt / branches / poly / lttv / modules / gui / detailedevents / events.c
index 02ad79a094c4c5f365a596c325c0fc8e43a07e1f..858ca4813e814f2cc981a3974041f9c64c717ed1 100644 (file)
 #include <math.h>
 
 #include <glib.h>
-#include <gmodule.h>
 #include <gtk/gtk.h>
 #include <gdk/gdk.h>
 
 #include <lttv/module.h>
 #include <lttv/hook.h>
-#include <lttv/gtkTraceSet.h>
-#include <lttv/processTrace.h>
+#include <lttvwindow/gtktraceset.h>
+#include <lttv/tracecontext.h>
 #include <lttv/state.h>
 #include <ltt/ltt.h>
 #include <ltt/event.h>
@@ -59,7 +58,7 @@
 //#include "mw_api.h"
 #include "gtktreeprivate.h"
 
-#include "../icons/hGuiEventsInsert.xpm"
+#include "hGuiEventsInsert.xpm"
 
 
 static LttvHooks  *before_event;
@@ -187,57 +186,6 @@ static gboolean parse_event(void *hook_data, void *call_data);
 
 static LttvModule *main_win_module;
 
-/**
- * plugin's init function
- *
- * This function initializes the Event Viewer functionnality through the
- * gtkTraceSet API.
- */
-G_MODULE_EXPORT void init(LttvModule *self, int argc, char *argv[]) {
-
-  main_win_module = lttv_module_require(self, "mainwin", argc, argv);
-  
-  if(main_win_module == NULL){
-    g_critical("Can't load Control Flow Viewer : missing mainwin\n");
-    return;
-  }
-  
-  /* Register the toolbar insert button */
-  toolbar_item_reg(hGuiEventsInsert_xpm, "Insert Event Viewer", h_gui_events);
-  
-  /* Register the menu item insert entry */
-  menu_item_reg("/", "Insert Event Viewer", h_gui_events);
-  
-}
-
-void event_destroy_walk(gpointer data, gpointer user_data)
-{
-  gui_events_destructor((EventViewerData*)data);
-}
-
-/**
- * plugin's destroy function
- *
- * This function releases the memory reserved by the module and unregisters
- * everything that has been registered in the gtkTraceSet API.
- */
-G_MODULE_EXPORT void destroy() {
-  int i;
-  
-  EventViewerData *event_viewer_data;
-  
-  if(g_event_viewer_data_list){
-    g_slist_foreach(g_event_viewer_data_list, event_destroy_walk, NULL );
-    g_slist_free(g_event_viewer_data_list);
-  }
-
-  /* Unregister the toolbar insert button */
-  toolbar_item_unreg(h_gui_events);
-  
-  /* Unregister the menu item insert entry */
-  menu_item_unreg(h_gui_events);
-}
-
 /* Enumeration of the columns */
 enum
 {
@@ -478,12 +426,12 @@ gui_events(MainWindow *parent_window, LttvTracesetSelector * s,char* key )
         G_OBJECT(event_viewer_data->hbox_v),
         MAX_NUMBER_EVENT,
         &event_viewer_data->size);
-  
+/*  
   g_object_set_data(
         G_OBJECT(event_viewer_data->hbox_v),
         TRACESET_TIME_SPAN,
         &event_viewer_data->time_span);
-
+*/
   event_viewer_data->filter_key = g_strdup(key);
   g_object_set_data(
         G_OBJECT(event_viewer_data->hbox_v),
@@ -805,6 +753,12 @@ gboolean show_event_detail(void * hook_data, void * call_data)
   EventViewerData *event_viewer_data = (EventViewerData*) hook_data;
   LttvTracesetContext * tsc = get_traceset_context(event_viewer_data->mw);
 
+  if(event_viewer_data->raw_trace_data_queue_tmp->length == 0 &&
+     event_viewer_data->raw_trace_data_queue->length == 0){
+    event_viewer_data->shown = FALSE;
+    return FALSE;
+  }
+
   if(event_viewer_data->shown == FALSE){
     event_viewer_data->shown = TRUE;
     update_raw_data_array(event_viewer_data, 
@@ -1201,6 +1155,7 @@ gui_events_free(EventViewerData *event_viewer_data)
     unreg_show_viewer(show_event_detail,event_viewer_data, event_viewer_data->mw);
     unreg_update_traceset(traceset_changed,event_viewer_data, event_viewer_data->mw);
 
+    g_free(event_viewer_data->filter_key);
     g_event_viewer_data_list = g_slist_remove(g_event_viewer_data_list, event_viewer_data);
     g_free(event_viewer_data);
   }
@@ -1213,8 +1168,8 @@ gui_events_destructor(EventViewerData *event_viewer_data)
 
   /* May already been done by GTK window closing */
   if(GTK_IS_WIDGET(event_viewer_data->hbox_v)){
+    gui_events_free(event_viewer_data);
     gtk_widget_destroy(event_viewer_data->hbox_v);
-    g_free(event_viewer_data->filter_key);
     event_viewer_data = NULL;
   }
   
@@ -1266,7 +1221,7 @@ void add_context_hooks(EventViewerData * event_viewer_data,
            LttvTracesetContext * tsc)
 {
   gint i, j, k, m,n, nbi, id;
-  gint nb_tracefile, nb_control, nb_per_cpu, nb_facility, nb_event;
+  gint nb_tracefile, nb_facility, nb_event;
   LttTrace *trace;
   LttvTraceContext *tc;
   LttvTracefileContext *tfc;
@@ -1292,19 +1247,14 @@ void add_context_hooks(EventViewerData * event_viewer_data,
     trace = tc->t;
     //if there are hooks for trace, add them here
 
-    nb_control = ltt_trace_control_tracefile_number(trace);
-    nb_per_cpu = ltt_trace_per_cpu_tracefile_number(trace);
-    nb_tracefile = nb_control + nb_per_cpu;
+    nb_tracefile = ltt_trace_control_tracefile_number(trace) +
+        ltt_trace_per_cpu_tracefile_number(trace);
     
     for(j = 0 ; j < nb_tracefile ; j++) {
       tf_s = lttv_trace_selector_tracefile_get(t_s,j);
       selected = lttv_tracefile_selector_get_selected(tf_s);
       if(!selected) continue;
-      
-      if(j < nb_control)
-  tfc = tc->control_tracefiles[j];
-      else
-  tfc = tc->per_cpu_tracefiles[j - nb_control];
+      tfc = tc->tracefiles[j];
       
       //if there are hooks for tracefile, add them here
       //      lttv_tracefile_context_add_hooks(tfc, NULL,NULL,NULL,NULL,
@@ -1342,7 +1292,7 @@ void remove_context_hooks(EventViewerData * event_viewer_data,
         LttvTracesetContext * tsc)
 {
   gint i, j, k, m, nbi, n, id;
-  gint nb_tracefile, nb_control, nb_per_cpu, nb_facility, nb_event;
+  gint nb_tracefile, nb_facility, nb_event;
   LttTrace *trace;
   LttvTraceContext *tc;
   LttvTracefileContext *tfc;
@@ -1368,19 +1318,14 @@ void remove_context_hooks(EventViewerData * event_viewer_data,
     trace = tc->t;
     //if there are hooks for trace, remove them here
 
-    nb_control = ltt_trace_control_tracefile_number(trace);
-    nb_per_cpu = ltt_trace_per_cpu_tracefile_number(trace);
-    nb_tracefile = nb_control + nb_per_cpu;
+    nb_tracefile = ltt_trace_control_tracefile_number(trace) +
+        ltt_trace_per_cpu_tracefile_number(trace);
     
     for(j = 0 ; j < nb_tracefile ; j++) {
       tf_s = lttv_trace_selector_tracefile_get(t_s,j);
       selected = lttv_tracefile_selector_get_selected(tf_s);
       if(!selected) continue;
-      
-      if(j < nb_control)
-  tfc = tc->control_tracefiles[j];
-      else
-  tfc = tc->per_cpu_tracefiles[j - nb_control];
+      tfc = tc->tracefiles[j];
       
       //if there are hooks for tracefile, remove them here
       //      lttv_tracefile_context_remove_hooks(tfc, NULL,NULL,NULL,NULL,
@@ -1441,6 +1386,8 @@ gboolean update_current_time(void * hook_data, void * call_data)
   int i, j;
   LttTime t;
 
+  if(!event_viewer_data->raw_trace_data_queue->head) return FALSE;
+
   if(event_viewer_data->current_time_updated ){
     event_viewer_data->current_time_updated = FALSE;
     return FALSE;
@@ -1889,3 +1836,51 @@ void remove_all_items_from_queue(GQueue *q)
 }
 
 
+/**
+ * plugin's init function
+ *
+ * This function initializes the Event Viewer functionnality through the
+ * gtkTraceSet API.
+ */
+static void init() {
+
+  /* Register the toolbar insert button */
+  toolbar_item_reg(hGuiEventsInsert_xpm, "Insert Event Viewer", h_gui_events);
+  
+  /* Register the menu item insert entry */
+  menu_item_reg("/", "Insert Event Viewer", h_gui_events);
+  
+}
+
+void event_destroy_walk(gpointer data, gpointer user_data)
+{
+  gui_events_destructor((EventViewerData*)data);
+}
+
+/**
+ * plugin's destroy function
+ *
+ * This function releases the memory reserved by the module and unregisters
+ * everything that has been registered in the gtkTraceSet API.
+ */
+static void destroy() {
+  int i;
+  
+  EventViewerData *event_viewer_data;
+  
+  if(g_event_viewer_data_list){
+    g_slist_foreach(g_event_viewer_data_list, event_destroy_walk, NULL );
+    g_slist_free(g_event_viewer_data_list);
+  }
+
+  /* Unregister the toolbar insert button */
+  toolbar_item_unreg(h_gui_events);
+  
+  /* Unregister the menu item insert entry */
+  menu_item_unreg(h_gui_events);
+}
+
+
+LTTV_MODULE("guievents", "Detailed events view", \
+    "Graphical module to display a detailed event list", \
+           init, destroy, "lttvwindow")
This page took 0.025129 seconds and 4 git commands to generate.