X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttv%2Fmodules%2Fgui%2Fstatistics%2Fstatistics.c;h=5c900b7814161b8a16e7a0813c242bf4dfed1975;hb=b9ce0bad7daf7c0a2333c91fdb1e35d602afe17f;hp=3f5c51d511fb2d0b4dd658833b3f25b8930ba155;hpb=f61f4dca50e13aa52b1ca3941c8f420848f4353f;p=lttv.git diff --git a/lttv/modules/gui/statistics/statistics.c b/lttv/modules/gui/statistics/statistics.c index 3f5c51d5..5c900b78 100644 --- a/lttv/modules/gui/statistics/statistics.c +++ b/lttv/modules/gui/statistics/statistics.c @@ -12,8 +12,8 @@ * * 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. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -116,6 +116,7 @@ struct _StatisticViewerData{ GHashTable *statistic_hash; guint background_info_waiting; + guint live_trace_count; }; @@ -131,7 +132,6 @@ static gint background_ready(void *hook_data, void *call_data) { StatisticViewerData *svd = (StatisticViewerData *)hook_data; Tab *tab = svd->tab; - LttvTrace *trace = (LttvTrace*)call_data; svd->background_info_waiting--; @@ -291,6 +291,7 @@ gui_statistic(LttvPluginTab *ptab) GtkTreeViewColumn *column; StatisticViewerData* statistic_viewer_data = g_new(StatisticViewerData,1); + statistic_viewer_data->live_trace_count = 0; Tab *tab = ptab->tab; statistic_viewer_data->tab = tab; statistic_viewer_data->ptab = ptab; @@ -302,7 +303,6 @@ gui_statistic(LttvPluginTab *ptab) lttvwindow_register_traceset_notify(statistic_viewer_data->tab, statistic_traceset_changed, statistic_viewer_data); - statistic_viewer_data->statistic_hash = g_hash_table_new_full(g_str_hash, g_str_equal, statistic_destroy_hash_key, @@ -425,13 +425,14 @@ extern FILE *stdout; extern FILE *stderr; #endif //DEBUG +static const char *live_msg = "Statistics for traceset containing live traces are inaccurate"; + void show_traceset_stats(StatisticViewerData * statistic_viewer_data) { Tab *tab = statistic_viewer_data->tab; int i, nb; LttvTraceset *ts; LttvTraceStats *tcs; - LttSystemDescription *desc; LttvTracesetStats * tscs = lttvwindow_get_traceset_stats(tab); gchar * str, trace_str[PATH_LENGTH]; GtkTreePath * path; @@ -453,6 +454,23 @@ void show_traceset_stats(StatisticViewerData * statistic_viewer_data) -1); path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter); str = gtk_tree_path_to_string (path); + + for(i = 0 ; i < nb ; i++) { + if (LTTV_TRACESET_CONTEXT(tscs)->traces[i]->t->is_live) { + statistic_viewer_data->live_trace_count++; + } + + } + if (statistic_viewer_data->live_trace_count) { + LttvAttributeValue value; + value = lttv_attribute_add(tscs->stats, + g_quark_from_static_string("WARNING: Live traceset"), + LTTV_STRING); + /* TODO ybrosseau 2012-03-15: add cast to silent discard const + warning... find a better way */ + *(value.v_string) = (char *)live_msg; + + } g_hash_table_insert(statistic_viewer_data->statistic_hash, (gpointer)str, tscs->stats); show_tree(statistic_viewer_data, tscs->stats, &iter); @@ -468,17 +486,31 @@ void show_traceset_stats(StatisticViewerData * statistic_viewer_data) start_time.tv_sec, start_time.tv_nsec); #endif //0 - sprintf(trace_str, g_quark_to_string(ltt_trace_name(tcs->parent.parent.t))); - gtk_tree_store_append (store, &iter, NULL); - gtk_tree_store_set (store, &iter,NAME_COLUMN,trace_str,-1); - path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter); - str = gtk_tree_path_to_string (path); - g_hash_table_insert(statistic_viewer_data->statistic_hash, - (gpointer)str,tcs->stats); - show_tree(statistic_viewer_data, tcs->stats, &iter); + sprintf(trace_str, "%s", g_quark_to_string(ltt_trace_name(tcs->parent.parent.t))); + /* TODO ybrosseau 2011-01-12: Reenable stats for live trace */ + if (LTTV_TRACE_CONTEXT(tcs)->t->is_live) { + strcat(trace_str, " [LIVE]"); + gtk_tree_store_append (store, &iter, NULL); + gtk_tree_store_set (store, &iter,NAME_COLUMN,trace_str,-1); + + path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter); + str = gtk_tree_path_to_string (path); + g_hash_table_insert(statistic_viewer_data->statistic_hash, + (gpointer)str,0); + + } else { + + gtk_tree_store_append (store, &iter, NULL); + gtk_tree_store_set (store, &iter,NAME_COLUMN,trace_str,-1); + path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter); + str = gtk_tree_path_to_string (path); + g_hash_table_insert(statistic_viewer_data->statistic_hash, + (gpointer)str,tcs->stats); + show_tree(statistic_viewer_data, tcs->stats, &iter); #ifdef DEBUG - lttv_attribute_write_xml(tcs->stats, stdout, 3, 4); + lttv_attribute_write_xml(tcs->stats, stdout, 3, 4); #endif //DEBUG + } } } @@ -525,7 +557,7 @@ void show_tree(StatisticViewerData * statistic_viewer_data, void show_statistic(StatisticViewerData * statistic_viewer_data, LttvAttribute* stats, GtkTextBuffer* buf) { - int i, nb , flag; + int i, nb = 0, flag; LttvAttributeName name; LttvAttributeValue value; LttvAttributeType type; @@ -534,7 +566,9 @@ void show_statistic(StatisticViewerData * statistic_viewer_data, GtkTextIter text_iter; flag = 0; - nb = lttv_attribute_get_number(stats); + if(stats) { + nb = lttv_attribute_get_number(stats); + } for(i = 0 ; i < nb ; i++) { type = lttv_attribute_get(stats, i, &name, &value, &is_named); if(is_named)