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()");
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));
}
+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)
//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
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;
}
}