X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2FguiEvents.c;h=c716521e34a9373770b0758080fc3be61615f142;hb=a2eab0c9ba77537fb2e801d63ff49af96c169e31;hp=0d3b9bc9f1f2a7193d0877c9f25353d0aa6b9132;hpb=8af8e4c5fec518b63c7877b49b228acc2b947177;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/guiEvents.c b/ltt/branches/poly/lttv/modules/guiEvents.c index 0d3b9bc9..c716521e 100644 --- a/ltt/branches/poly/lttv/modules/guiEvents.c +++ b/ltt/branches/poly/lttv/modules/guiEvents.c @@ -55,7 +55,7 @@ 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); @@ -85,7 +85,7 @@ typedef enum _ScrollDirection{ typedef struct _EventViewerData { mainWindow * mw; - TimeInterval time_interval; + TimeWindow time_window; LttTime current_time; LttvHooks * before_event_hooks; @@ -94,8 +94,9 @@ 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 @@ -170,13 +171,12 @@ static LttvModule *Main_Win_Module; */ 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; - } + 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()"); @@ -189,7 +189,7 @@ G_MODULE_EXPORT void init(LttvModule *self, int argc, char *argv[]) { } -void destroy_walk(gpointer data, gpointer user_data) +void event_destroy_walk(gpointer data, gpointer user_data) { GuiEvents_Destructor((EventViewerData*)data); } @@ -207,9 +207,10 @@ G_MODULE_EXPORT void destroy() { g_critical("GUI Event Viewer destroy()"); - g_slist_foreach(sEvent_Viewer_Data_List, destroy_walk, NULL ); - - g_slist_free(sEvent_Viewer_Data_List); + if(sEvent_Viewer_Data_List){ + g_slist_foreach(sEvent_Viewer_Data_List, event_destroy_walk, NULL ); + g_slist_free(sEvent_Viewer_Data_List); + } /* Unregister the toolbar insert button */ ToolbarItemUnreg(hGuiEvents); @@ -264,11 +265,10 @@ GuiEvents(mainWindow *pmParentWindow) GtkCellRenderer *renderer; EventViewerData* Event_Viewer_Data = g_new(EventViewerData,1) ; RawTraceData * data; - double time_value; 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(); @@ -277,7 +277,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); @@ -435,12 +435,10 @@ 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; - time_value *= NANSECOND_CONST; - time_value += (double)Event_Viewer_Data->trace_end.tv_nsec - Event_Viewer_Data->trace_start.tv_nsec; - Event_Viewer_Data->VAdjust_C->upper = time_value; + getTracesetTimeSpan(Event_Viewer_Data->mw, &Event_Viewer_Data->time_span); + + start = ltt_time_sub(Event_Viewer_Data->time_span.endTime, Event_Viewer_Data->time_span.startTime); + Event_Viewer_Data->VAdjust_C->upper = ltt_time_to_double(start) * NANOSECONDS_PER_SECOND; Event_Viewer_Data->append = TRUE; @@ -687,8 +685,8 @@ void Tree_V_cursor_changed_cb (GtkWidget *widget, gpointer data) gtk_tree_view_get_cursor(GTK_TREE_VIEW(Event_Viewer_Data->Tree_V), &path, NULL); if(gtk_tree_model_get_iter(model,&iter,path)){ gtk_tree_model_get(model, &iter, TIME_COLUMN, &time, -1); - ltt_time.tv_sec = time / NANSECOND_CONST; - ltt_time.tv_nsec = time % NANSECOND_CONST; + ltt_time.tv_sec = time / NANOSECONDS_PER_SECOND; + ltt_time.tv_nsec = time % NANOSECONDS_PER_SECOND; if(ltt_time.tv_sec != Event_Viewer_Data->current_time.tv_sec || ltt_time.tv_nsec != Event_Viewer_Data->current_time.tv_nsec) @@ -939,16 +937,8 @@ 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; - value = (int)(time_value / NANSECOND_CONST); - start.tv_sec += value; - value = time_value / NANSECOND_CONST - value; - value *= NANSECOND_CONST; - start.tv_nsec += value; - if(start.tv_nsec > NANSECOND_CONST){ - start.tv_sec++; - start.tv_nsec -= NANSECOND_CONST; - } + time = ltt_time_from_double(time_value / NANOSECONDS_PER_SECOND); + start = ltt_time_add(Event_Viewer_Data->time_span.startTime, time); Event_Viewer_Data->previous_value = time_value; get_events(Event_Viewer_Data, start, end, RESERVE_SMALL_SIZE,&size); if(size < List_Height){ @@ -987,12 +977,8 @@ void get_test_data(double time_value, guint List_Height, if(direction != SCROLL_NONE && direction != SCROLL_JUMP){ 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 *= NANSECOND_CONST; - value -= Event_Viewer_Data->trace_start.tv_nsec; - value += raw_data->time.tv_nsec; - Event_Viewer_Data->VAdjust_C->value = value; + time = ltt_time_sub(raw_data->time, Event_Viewer_Data->time_span.startTime); + Event_Viewer_Data->VAdjust_C->value = ltt_time_to_double(time) * NANOSECONDS_PER_SECOND; g_signal_stop_emission_by_name(G_OBJECT(Event_Viewer_Data->VAdjust_C), "value-changed"); Event_Viewer_Data->previous_value = value; } @@ -1013,7 +999,7 @@ void get_test_data(double time_value, guint List_Height, // Add a new row to the model real_data = raw_data->time.tv_sec; - real_data *= NANSECOND_CONST; + real_data *= NANOSECONDS_PER_SECOND; real_data += raw_data->time.tv_nsec; gtk_list_store_append (Event_Viewer_Data->Store_M, &iter); gtk_list_store_set (Event_Viewer_Data->Store_M, &iter, @@ -1127,19 +1113,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); - 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); + 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 @@ -1148,8 +1136,10 @@ GuiEvents_Destructor(EventViewerData *Event_Viewer_Data) guint index; /* May already been done by GTK window closing */ - if(GTK_IS_WIDGET(Event_Viewer_Data->HBox_V)) + 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); @@ -1159,7 +1149,7 @@ GuiEvents_Destructor(EventViewerData *Event_Viewer_Data) //gtk_widget_destroy(GTK_WIDGET(Event_Viewer_Data->Store_M)); g_warning("Delete Event data from destroy\n"); - GuiEvents_free(Event_Viewer_Data); + //GuiEvents_free(Event_Viewer_Data); } //FIXME : call hGuiEvents_Destructor for corresponding data upon widget destroy @@ -1198,10 +1188,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; } @@ -1210,7 +1200,7 @@ gboolean updateCurrentTime(void * hook_data, void * call_data) { EventViewerData *Event_Viewer_Data = (EventViewerData*) hook_data; Event_Viewer_Data->current_time = *(LttTime*)call_data; - uint64_t nsec = Event_Viewer_Data->current_time.tv_sec * NANSECOND_CONST + uint64_t nsec = Event_Viewer_Data->current_time.tv_sec * NANOSECONDS_PER_SECOND + Event_Viewer_Data->current_time.tv_nsec; GtkTreeIter iter; uint64_t time;