X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;ds=sidebyside;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2FguiEvents.c;h=a5677aa5ff33989bb818c8bcd67c4f2c068f86f8;hb=091d11c77deb2a6537bf2c1ce89ba8877441cba9;hp=64c392690fe7f5031c621c97a039a73468671d10;hpb=c46519c856ab26d16378a3984814cda3b86af160;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/guiEvents.c b/ltt/branches/poly/lttv/modules/guiEvents.c index 64c39269..a5677aa5 100644 --- a/ltt/branches/poly/lttv/modules/guiEvents.c +++ b/ltt/branches/poly/lttv/modules/guiEvents.c @@ -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; } }