oops, no modif to main window : the drawing request will come from the configure...
[lttv.git] / ltt / branches / poly / lttv / modules / guiEvents.c
index 64c392690fe7f5031c621c97a039a73468671d10..a5677aa5ff33989bb818c8bcd67c4f2c068f86f8 100644 (file)
@@ -162,13 +162,24 @@ static void get_events(EventViewerData* Event_Viewer_Data, LttTime start,
                       LttTime end, unsigned maxNumEvents, unsigned * realNumEvent);
 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() {
+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;
+       }
+       
 
   g_critical("GUI Event Viewer init()");
   
@@ -281,13 +292,14 @@ GuiEvents(mainWindow *pmParentWindow)
   Event_Viewer_Data->Selected_Event = 0;
 
   /* Create a model for storing the data list */
-  Event_Viewer_Data->Store_M = gtk_list_store_new (N_COLUMNS,       /* Total number of columns */
-                                                  G_TYPE_INT,      /* CPUID                  */
-                                                  G_TYPE_STRING,   /* Event                   */
-                                                  G_TYPE_UINT64,      /* Time                    */
-                                                  G_TYPE_INT,      /* PID                     */
-                                                  G_TYPE_INT,      /* Entry length            */
-                                                  G_TYPE_STRING);  /* Event's description     */
+  Event_Viewer_Data->Store_M = gtk_list_store_new (
+               N_COLUMNS,      /* Total number of columns */
+               G_TYPE_INT,     /* CPUID                  */
+               G_TYPE_STRING,  /* Event                   */
+               G_TYPE_UINT64,  /* Time                    */
+               G_TYPE_INT,     /* PID                     */
+               G_TYPE_INT,     /* Entry length            */
+               G_TYPE_STRING); /* Event's description     */
        
   /* Create the viewer widget for the columned list */
   Event_Viewer_Data->Tree_V = gtk_tree_view_new_with_model (GTK_TREE_MODEL (Event_Viewer_Data->Store_M));
@@ -1110,6 +1122,21 @@ void add_test_data(EventViewerData *Event_Viewer_Data)
   
 }
        
+void
+GuiEvents_free(EventViewerData *Event_Viewer_Data)
+{
+  lttv_hooks_remove(Event_Viewer_Data->before_event_hooks,parse_event);
+  lttv_hooks_destroy(Event_Viewer_Data->before_event_hooks);
+  
+  remove_all_items_from_queue (Event_Viewer_Data->raw_trace_data_queue);
+  g_queue_free(Event_Viewer_Data->raw_trace_data_queue);
+  g_queue_free(Event_Viewer_Data->raw_trace_data_queue_tmp);
+
+  UnregUpdateTimeInterval(updateTimeInterval,Event_Viewer_Data, Event_Viewer_Data->mw);
+  UnregUpdateCurrentTime(updateCurrentTime,Event_Viewer_Data, Event_Viewer_Data->mw);
+
+  g_free(Event_Viewer_Data);
+}
 
 void
 GuiEvents_Destructor(EventViewerData *Event_Viewer_Data)
@@ -1127,17 +1154,7 @@ GuiEvents_Destructor(EventViewerData *Event_Viewer_Data)
   //gtk_list_store_clear(Event_Viewer_Data->Store_M);
   //gtk_widget_destroy(GTK_WIDGET(Event_Viewer_Data->Store_M));
   
-  lttv_hooks_remove(Event_Viewer_Data->before_event_hooks,parse_event);
-  lttv_hooks_destroy(Event_Viewer_Data->before_event_hooks);
-  
-  remove_all_items_from_queue (Event_Viewer_Data->raw_trace_data_queue);
-  g_queue_free(Event_Viewer_Data->raw_trace_data_queue);
-  g_queue_free(Event_Viewer_Data->raw_trace_data_queue_tmp);
-
-  UnregUpdateTimeInterval(updateTimeInterval,Event_Viewer_Data, Event_Viewer_Data->mw);
-  UnregUpdateCurrentTime(updateCurrentTime,Event_Viewer_Data, Event_Viewer_Data->mw);
-
-  g_free(Event_Viewer_Data);
+  GuiEvents_free(Event_Viewer_Data);
 }
 
 //FIXME : call hGuiEvents_Destructor for corresponding data upon widget destroy
@@ -1490,6 +1507,7 @@ void remove_instance(GtkCustomHBox * box){
     Event_Viewer_Data = (EventViewerData *)g_slist_nth_data(sEvent_Viewer_Data_List, i);
     if((void*)box == (void*)Event_Viewer_Data->instance_container){
       sEvent_Viewer_Data_List = g_slist_remove(sEvent_Viewer_Data_List, Event_Viewer_Data);
+      GuiEvents_free(Event_Viewer_Data);
       break;
     }
   }
This page took 0.024147 seconds and 4 git commands to generate.