X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;ds=sidebyside;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fdetailedevents%2Fevents.c;h=17cc9321c5255f45f969668d3e270801245fc1cc;hb=dbb7bb0937929c494291d7a286c6ece90c27ac07;hp=f2d4a73a203eb7822e99cf74fea4abf12c6810be;hpb=af1cf84f336e34ad46ab700820f4997034c26334;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/detailedevents/events.c b/ltt/branches/poly/lttv/modules/gui/detailedevents/events.c index f2d4a73a..17cc9321 100644 --- a/ltt/branches/poly/lttv/modules/gui/detailedevents/events.c +++ b/ltt/branches/poly/lttv/modules/gui/detailedevents/events.c @@ -1,3 +1,22 @@ +/* This file is part of the Linux Trace Toolkit viewer + * Copyright (C) 2003-2004 Mathieu Desnoyers and XangXiu Yang + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, + * MA 02111-1307, USA. + */ + + //*! \defgroup GuiEvents libGuiEvents: The GUI Events display plugin */ /*\@{*/ @@ -27,7 +46,7 @@ #include #include -#include +#include #include #include #include @@ -459,12 +478,12 @@ gui_events(MainWindow *parent_window, LttvTracesetSelector * s,char* key ) G_OBJECT(event_viewer_data->hbox_v), MAX_NUMBER_EVENT, &event_viewer_data->size); - +/* g_object_set_data( G_OBJECT(event_viewer_data->hbox_v), TRACESET_TIME_SPAN, &event_viewer_data->time_span); - +*/ event_viewer_data->filter_key = g_strdup(key); g_object_set_data( G_OBJECT(event_viewer_data->hbox_v), @@ -786,6 +805,12 @@ gboolean show_event_detail(void * hook_data, void * call_data) EventViewerData *event_viewer_data = (EventViewerData*) hook_data; LttvTracesetContext * tsc = get_traceset_context(event_viewer_data->mw); + if(event_viewer_data->raw_trace_data_queue_tmp->length == 0 && + event_viewer_data->raw_trace_data_queue->length == 0){ + event_viewer_data->shown = FALSE; + return FALSE; + } + if(event_viewer_data->shown == FALSE){ event_viewer_data->shown = TRUE; update_raw_data_array(event_viewer_data, @@ -1182,6 +1207,7 @@ gui_events_free(EventViewerData *event_viewer_data) unreg_show_viewer(show_event_detail,event_viewer_data, event_viewer_data->mw); unreg_update_traceset(traceset_changed,event_viewer_data, event_viewer_data->mw); + g_free(event_viewer_data->filter_key); g_event_viewer_data_list = g_slist_remove(g_event_viewer_data_list, event_viewer_data); g_free(event_viewer_data); } @@ -1194,8 +1220,8 @@ gui_events_destructor(EventViewerData *event_viewer_data) /* May already been done by GTK window closing */ if(GTK_IS_WIDGET(event_viewer_data->hbox_v)){ + gui_events_free(event_viewer_data); gtk_widget_destroy(event_viewer_data->hbox_v); - g_free(event_viewer_data->filter_key); event_viewer_data = NULL; } @@ -1247,7 +1273,7 @@ void add_context_hooks(EventViewerData * event_viewer_data, LttvTracesetContext * tsc) { gint i, j, k, m,n, nbi, id; - gint nb_tracefile, nb_control, nb_per_cpu, nb_facility, nb_event; + gint nb_tracefile, nb_facility, nb_event; LttTrace *trace; LttvTraceContext *tc; LttvTracefileContext *tfc; @@ -1273,19 +1299,14 @@ void add_context_hooks(EventViewerData * event_viewer_data, trace = tc->t; //if there are hooks for trace, add them here - nb_control = ltt_trace_control_tracefile_number(trace); - nb_per_cpu = ltt_trace_per_cpu_tracefile_number(trace); - nb_tracefile = nb_control + nb_per_cpu; + nb_tracefile = ltt_trace_control_tracefile_number(trace) + + ltt_trace_per_cpu_tracefile_number(trace); for(j = 0 ; j < nb_tracefile ; j++) { tf_s = lttv_trace_selector_tracefile_get(t_s,j); selected = lttv_tracefile_selector_get_selected(tf_s); if(!selected) continue; - - if(j < nb_control) - tfc = tc->control_tracefiles[j]; - else - tfc = tc->per_cpu_tracefiles[j - nb_control]; + tfc = tc->tracefiles[j]; //if there are hooks for tracefile, add them here // lttv_tracefile_context_add_hooks(tfc, NULL,NULL,NULL,NULL, @@ -1323,7 +1344,7 @@ void remove_context_hooks(EventViewerData * event_viewer_data, LttvTracesetContext * tsc) { gint i, j, k, m, nbi, n, id; - gint nb_tracefile, nb_control, nb_per_cpu, nb_facility, nb_event; + gint nb_tracefile, nb_facility, nb_event; LttTrace *trace; LttvTraceContext *tc; LttvTracefileContext *tfc; @@ -1349,19 +1370,14 @@ void remove_context_hooks(EventViewerData * event_viewer_data, trace = tc->t; //if there are hooks for trace, remove them here - nb_control = ltt_trace_control_tracefile_number(trace); - nb_per_cpu = ltt_trace_per_cpu_tracefile_number(trace); - nb_tracefile = nb_control + nb_per_cpu; + nb_tracefile = ltt_trace_control_tracefile_number(trace) + + ltt_trace_per_cpu_tracefile_number(trace); for(j = 0 ; j < nb_tracefile ; j++) { tf_s = lttv_trace_selector_tracefile_get(t_s,j); selected = lttv_tracefile_selector_get_selected(tf_s); if(!selected) continue; - - if(j < nb_control) - tfc = tc->control_tracefiles[j]; - else - tfc = tc->per_cpu_tracefiles[j - nb_control]; + tfc = tc->tracefiles[j]; //if there are hooks for tracefile, remove them here // lttv_tracefile_context_remove_hooks(tfc, NULL,NULL,NULL,NULL, @@ -1422,6 +1438,8 @@ gboolean update_current_time(void * hook_data, void * call_data) int i, j; LttTime t; + if(!event_viewer_data->raw_trace_data_queue->head) return FALSE; + if(event_viewer_data->current_time_updated ){ event_viewer_data->current_time_updated = FALSE; return FALSE;