X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2FguiEvents.c;h=9b3e8641b07b40c36e8447371709c260bedc03d8;hb=b782dd11ec8e363e135b32a563687a8e4f70bedb;hp=a5677aa5ff33989bb818c8bcd67c4f2c068f86f8;hpb=091d11c77deb2a6537bf2c1ce89ba8877441cba9;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/guiEvents.c b/ltt/branches/poly/lttv/modules/guiEvents.c index a5677aa5..9b3e8641 100644 --- a/ltt/branches/poly/lttv/modules/guiEvents.c +++ b/ltt/branches/poly/lttv/modules/guiEvents.c @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include @@ -56,11 +55,10 @@ static LttvHooks *before_event; static GSList *sEvent_Viewer_Data_List = NULL ; /** hook functions for update time interval, current time ... */ -gboolean updateTimeInterval(void * hook_data, void * call_data); +gboolean updateTimeWindow(void * hook_data, void * call_data); gboolean updateCurrentTime(void * hook_data, void * call_data); void remove_item_from_queue(GQueue * q, gboolean fromHead); void remove_all_items_from_queue(GQueue * q); -void remove_instance(GtkCustomHBox * box); typedef struct _RawTraceData{ unsigned cpu_id; @@ -87,7 +85,7 @@ typedef enum _ScrollDirection{ typedef struct _EventViewerData { mainWindow * mw; - TimeInterval time_interval; + TimeWindow time_window; LttTime current_time; LttvHooks * before_event_hooks; @@ -96,11 +94,11 @@ typedef struct _EventViewerData { GQueue * raw_trace_data_queue_tmp; //tmp buf to contain raw data unsigned current_event_index; double previous_value; //value of the slide - LttTime trace_start; - LttTime trace_end; + TimeInterval time_span; + // LttTime trace_start; + // LttTime trace_end; unsigned start_event_index; //the first event shown in the window unsigned end_event_index; //the last event shown in the window - GtkWidget * instance_container; //box to contain all widgets //scroll window containing Tree View GtkWidget * Scroll_Win; @@ -137,6 +135,7 @@ GtkWidget *hGuiEvents(mainWindow *pmParentWindow); EventViewerData *GuiEvents(mainWindow *pmParentWindow); //! Event Viewer's destructor void GuiEvents_Destructor(EventViewerData *Event_Viewer_Data); +void GuiEvents_free(EventViewerData *Event_Viewer_Data); static int Event_Selected_Hook(void *hook_data, void *call_data); @@ -247,7 +246,7 @@ hGuiEvents(mainWindow * pmParentWindow) EventViewerData* Event_Viewer_Data = GuiEvents(pmParentWindow) ; if(Event_Viewer_Data) - return Event_Viewer_Data->instance_container; + return Event_Viewer_Data->HBox_V; else return NULL; } @@ -270,7 +269,7 @@ GuiEvents(mainWindow *pmParentWindow) unsigned size; Event_Viewer_Data->mw = pmParentWindow; - GetTimeInterval(Event_Viewer_Data->mw, &Event_Viewer_Data->time_interval); + GetTimeWindow(Event_Viewer_Data->mw, &Event_Viewer_Data->time_window); GetCurrentTime(Event_Viewer_Data->mw, &Event_Viewer_Data->current_time); Event_Viewer_Data->before_event_hooks = lttv_hooks_new(); @@ -279,7 +278,7 @@ GuiEvents(mainWindow *pmParentWindow) Event_Viewer_Data->raw_trace_data_queue = g_queue_new(); Event_Viewer_Data->raw_trace_data_queue_tmp = g_queue_new(); - RegUpdateTimeInterval(updateTimeInterval,Event_Viewer_Data, Event_Viewer_Data->mw); + RegUpdateTimeWindow(updateTimeWindow,Event_Viewer_Data, Event_Viewer_Data->mw); RegUpdateCurrentTime(updateCurrentTime,Event_Viewer_Data, Event_Viewer_Data->mw); Event_Viewer_Data->Scroll_Win = gtk_scrolled_window_new (NULL, NULL); @@ -397,10 +396,8 @@ GuiEvents(mainWindow *pmParentWindow) gtk_container_add (GTK_CONTAINER (Event_Viewer_Data->Scroll_Win), Event_Viewer_Data->Tree_V); - Event_Viewer_Data->instance_container = gtk_custom_hbox_new(0, 0, remove_instance); Event_Viewer_Data->HBox_V = gtk_hbox_new(0, 0); gtk_box_pack_start(GTK_BOX(Event_Viewer_Data->HBox_V), Event_Viewer_Data->Scroll_Win, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(Event_Viewer_Data->instance_container), Event_Viewer_Data->HBox_V, TRUE, TRUE, 0); /* Create vertical scrollbar and pack it */ Event_Viewer_Data->VScroll_VC = gtk_vscrollbar_new(NULL); @@ -426,7 +423,6 @@ GuiEvents(mainWindow *pmParentWindow) // Event_Viewer_Data->VTree_Adjust_C->upper; g_critical("value : %u",Event_Viewer_Data->VTree_Adjust_C->upper); /* Raw event trace */ - gtk_widget_show(Event_Viewer_Data->instance_container); gtk_widget_show(Event_Viewer_Data->HBox_V); gtk_widget_show(Event_Viewer_Data->Tree_V); gtk_widget_show(Event_Viewer_Data->VScroll_VC); @@ -440,11 +436,11 @@ GuiEvents(mainWindow *pmParentWindow) Event_Viewer_Data->Num_Visible_Events = 1; //get the life span of the traceset and set the upper of the scroll bar - getTracesetTimeSpan(Event_Viewer_Data->mw, &Event_Viewer_Data->trace_start, - &Event_Viewer_Data->trace_end); - time_value = Event_Viewer_Data->trace_end.tv_sec - Event_Viewer_Data->trace_start.tv_sec; + getTracesetTimeSpan(Event_Viewer_Data->mw, &Event_Viewer_Data->time_span); + + time_value = Event_Viewer_Data->time_span.endTime.tv_sec - Event_Viewer_Data->time_span.startTime.tv_sec; time_value *= NANSECOND_CONST; - time_value += (double)Event_Viewer_Data->trace_end.tv_nsec - Event_Viewer_Data->trace_start.tv_nsec; + time_value += (double)Event_Viewer_Data->time_span.endTime.tv_nsec - Event_Viewer_Data->time_span.startTime.tv_nsec; Event_Viewer_Data->VAdjust_C->upper = time_value; Event_Viewer_Data->append = TRUE; @@ -466,6 +462,13 @@ GuiEvents(mainWindow *pmParentWindow) /* Set the Selected Event */ // Tree_V_set_cursor(Event_Viewer_Data); + + + g_object_set_data_full( + G_OBJECT(Event_Viewer_Data->HBox_V), + "Event_Viewer_Data", + Event_Viewer_Data, + (GDestroyNotify)GuiEvents_free); return Event_Viewer_Data; } @@ -937,7 +940,7 @@ void get_test_data(double time_value, guint List_Height, remove_all_items_from_queue(Event_Viewer_Data->raw_trace_data_queue); end.tv_sec = G_MAXULONG; end.tv_nsec = G_MAXULONG; - start = Event_Viewer_Data->trace_start; + start = Event_Viewer_Data->time_span.startTime; value = (int)(time_value / NANSECOND_CONST); start.tv_sec += value; value = time_value / NANSECOND_CONST - value; @@ -986,9 +989,9 @@ void get_test_data(double time_value, guint List_Height, first = Event_Viewer_Data->raw_trace_data_queue->head; raw_data = (RawTraceData*)g_list_nth_data(first,Event_Number); value = raw_data->time.tv_sec; - value -= Event_Viewer_Data->trace_start.tv_sec; + value -= Event_Viewer_Data->time_span.startTime.tv_sec; value *= NANSECOND_CONST; - value -= Event_Viewer_Data->trace_start.tv_nsec; + value -= Event_Viewer_Data->time_span.startTime.tv_nsec; value += raw_data->time.tv_nsec; Event_Viewer_Data->VAdjust_C->value = value; g_signal_stop_emission_by_name(G_OBJECT(Event_Viewer_Data->VAdjust_C), "value-changed"); @@ -1125,17 +1128,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); + if(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); + UnregUpdateTimeWindow(updateTimeWindow,Event_Viewer_Data, Event_Viewer_Data->mw); + UnregUpdateCurrentTime(updateCurrentTime,Event_Viewer_Data, Event_Viewer_Data->mw); - g_free(Event_Viewer_Data); + sEvent_Viewer_Data_List = g_slist_remove(sEvent_Viewer_Data_List, Event_Viewer_Data); + g_warning("Delete Event data\n"); + g_free(Event_Viewer_Data); + } } void @@ -1144,8 +1151,10 @@ GuiEvents_Destructor(EventViewerData *Event_Viewer_Data) guint index; /* May already been done by GTK window closing */ - if(GTK_IS_WIDGET(Event_Viewer_Data->instance_container)) - gtk_widget_destroy(Event_Viewer_Data->instance_container); + if(GTK_IS_WIDGET(Event_Viewer_Data->HBox_V)){ + gtk_widget_destroy(Event_Viewer_Data->HBox_V); + Event_Viewer_Data = NULL; + } /* Destroy the Tree View */ //gtk_widget_destroy(Event_Viewer_Data->Tree_V); @@ -1154,6 +1163,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)); + g_warning("Delete Event data from destroy\n"); GuiEvents_free(Event_Viewer_Data); } @@ -1193,10 +1203,10 @@ int Event_Selected_Hook(void *hook_data, void *call_data) } -gboolean updateTimeInterval(void * hook_data, void * call_data) +gboolean updateTimeWindow(void * hook_data, void * call_data) { EventViewerData *Event_Viewer_Data = (EventViewerData*) hook_data; - Event_Viewer_Data->time_interval = *(TimeInterval*)call_data; + Event_Viewer_Data->time_window = *(TimeWindow*)call_data; return FALSE; } @@ -1234,7 +1244,7 @@ gboolean updateCurrentTime(void * hook_data, void * call_data) void Tree_V_grab_focus(GtkWidget *widget, gpointer data){ EventViewerData *Event_Viewer_Data = (EventViewerData *)data; mainWindow * mw = Event_Viewer_Data->mw; - SetFocusedPane(mw, gtk_widget_get_parent(Event_Viewer_Data->instance_container)); + SetFocusedPane(mw, gtk_widget_get_parent(Event_Viewer_Data->HBox_V)); } void get_events(EventViewerData* Event_Viewer_Data, LttTime start, @@ -1499,20 +1509,6 @@ void remove_all_items_from_queue(GQueue *q) } } -void remove_instance(GtkCustomHBox * box){ - int i; - EventViewerData *Event_Viewer_Data ; - - for(i=0;iinstance_container){ - sEvent_Viewer_Data_List = g_slist_remove(sEvent_Viewer_Data_List, Event_Viewer_Data); - GuiEvents_free(Event_Viewer_Data); - break; - } - } -} -