X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fstatistics%2Fstatistics.c;h=341ea771d4654fac4092bd31b0ac7f62c3a25433;hb=224446ce9bb1b6724122cfdf4e3e716a5526af24;hp=fefaa3076aa27b88f0983b9f1c0194031639d86a;hpb=912be9a5bd895c20a2721f7d9799917c4517e0e4;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/statistics/statistics.c b/ltt/branches/poly/lttv/modules/gui/statistics/statistics.c index fefaa307..341ea771 100644 --- a/ltt/branches/poly/lttv/modules/gui/statistics/statistics.c +++ b/ltt/branches/poly/lttv/modules/gui/statistics/statistics.c @@ -17,15 +17,15 @@ */ #include -#include #include #include +#include #include -#include -#include +#include +#include #include -#include +#include #include #include @@ -36,12 +36,9 @@ #include -#include "../icons/hGuiStatisticInsert.xpm" +#include "hGuiStatisticInsert.xpm" -#define g_info(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, format) -#define g_debug(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format) - -#define PATH_LENGTH 256 +#define PATH_LENGTH 256 /* CHECK */ static LttvModule *statistic_main_win_module; static GPtrArray * statistic_traceset; @@ -95,7 +92,7 @@ struct _StatisticViewerData{ gboolean calculate_stats; int size; - TimeInterval time_span; + //TimeInterval time_span; gboolean shown; //indicate if the statistic is shown or not char * filter_key; @@ -118,66 +115,16 @@ struct _StatisticViewerData{ }; -/** - * plugin's init function - * - * This function initializes the Statistic Viewer functionnality through the - * gtkTraceSet API. - */ -G_MODULE_EXPORT void init(LttvModule *self, int argc, char *argv[]) { - - statistic_main_win_module = lttv_module_require(self, "mainwin", argc, argv); - - if(statistic_main_win_module == NULL){ - g_critical("Can't load Statistic Viewer : missing mainwin\n"); - return; - } - - statistic_traceset = g_ptr_array_new (); - - /* Register the toolbar insert button */ - toolbar_item_reg(hGuiStatisticInsert_xpm, "Insert Statistic Viewer", h_gui_statistic); - - /* Register the menu item insert entry */ - menu_item_reg("/", "Insert Statistic Viewer", h_gui_statistic); - -} - -void statistic_destroy_walk(gpointer data, gpointer user_data) -{ - gui_statistic_destructor((StatisticViewerData*)data); -} - -/** - * plugin's destroy function - * - * This function releases the memory reserved by the module and unregisters - * everything that has been registered in the gtkTraceSet API. - */ -G_MODULE_EXPORT void destroy() { - int i; - - if(g_statistic_viewer_data_list){ - g_slist_foreach(g_statistic_viewer_data_list, statistic_destroy_walk, NULL ); - g_slist_free(g_statistic_viewer_data_list); - } - g_ptr_array_free (statistic_traceset, TRUE); - - /* Unregister the toolbar insert button */ - toolbar_item_unreg(h_gui_statistic); - - /* Unregister the menu item insert entry */ - menu_item_unreg(h_gui_statistic); -} - - void gui_statistic_free(StatisticViewerData *statistic_viewer_data) { if(statistic_viewer_data){ - unreg_update_time_window(statistic_update_time_window,statistic_viewer_data, statistic_viewer_data->mw); - unreg_show_viewer(statistic_show_viewer,statistic_viewer_data, statistic_viewer_data->mw); - unreg_update_traceset(statistic_traceset_changed,statistic_viewer_data, statistic_viewer_data->mw); + lttvwindow_unregister_time_window_notify(statistic_viewer_data->mw, + statistic_update_time_window,statistic_viewer_data); + lttvwindow_unregister_show(statistic_viewer_data->mw, + statistic_show_viewer,statistic_viewer_data); + lttvwindow_unregister_traceset_notify(statistic_viewer_data->mw, + statistic_traceset_changed,statistic_viewer_data); g_hash_table_destroy(statistic_viewer_data->statistic_hash); g_free(statistic_viewer_data->filter_key); @@ -250,20 +197,27 @@ gui_statistic(MainWindow *parent_window, LttvTracesetSelector * s, char* key) StatisticViewerData* statistic_viewer_data = g_new(StatisticViewerData,1); statistic_viewer_data->mw = parent_window; - statistic_viewer_data->stats = get_traceset_stats_api(statistic_viewer_data->mw); + statistic_viewer_data->stats = + lttvwindow_get_traceset_stats(statistic_viewer_data->mw); statistic_viewer_data->calculate_stats = statistic_insert_traceset_stats((void *)statistic_viewer_data->stats); - reg_update_time_window(statistic_update_time_window,statistic_viewer_data, statistic_viewer_data->mw); - reg_show_viewer(statistic_show_viewer,statistic_viewer_data, statistic_viewer_data->mw); - reg_update_traceset(statistic_traceset_changed,statistic_viewer_data, statistic_viewer_data->mw); + lttvwindow_register_time_window_notify(statistic_viewer_data->mw, + statistic_update_time_window,statistic_viewer_data); + lttvwindow_register_show(statistic_viewer_data->mw, + statistic_show_viewer,statistic_viewer_data); + lttvwindow_register_traceset_notify(statistic_viewer_data->mw, + 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, - statistic_destroy_hash_data); + statistic_viewer_data->statistic_hash = g_hash_table_new_full(g_str_hash, + g_str_equal, + statistic_destroy_hash_key, + statistic_destroy_hash_data); statistic_viewer_data->hpaned_v = gtk_hpaned_new(); statistic_viewer_data->store_m = gtk_tree_store_new (N_COLUMNS, G_TYPE_STRING); - statistic_viewer_data->tree_v = gtk_tree_view_new_with_model (GTK_TREE_MODEL (statistic_viewer_data->store_m)); + statistic_viewer_data->tree_v = + gtk_tree_view_new_with_model ( + GTK_TREE_MODEL (statistic_viewer_data->store_m)); g_object_unref (G_OBJECT (statistic_viewer_data->store_m)); g_signal_connect (G_OBJECT (statistic_viewer_data->tree_v), "grab-focus", @@ -317,24 +271,22 @@ gui_statistic(MainWindow *parent_window, LttvTracesetSelector * s, char* key) gtk_widget_show(statistic_viewer_data->text_v); gtk_widget_show(statistic_viewer_data->hpaned_v); - //get the life span of the traceset and set the upper of the scroll bar - get_traceset_time_span(statistic_viewer_data->mw, &statistic_viewer_data->time_span); - statistic_viewer_data->shown = FALSE; statistic_viewer_data->filter_key = g_strdup(key); g_object_set_data( G_OBJECT(statistic_viewer_data->hpaned_v), statistic_viewer_data->filter_key, s); - + /* g_object_set_data( G_OBJECT(statistic_viewer_data->hpaned_v), TRACESET_TIME_SPAN, &statistic_viewer_data->time_span); - + */ + if(statistic_viewer_data->calculate_stats){ - if(lttv_stats_load_statistics(statistic_viewer_data->stats)) - statistic_viewer_data->calculate_stats = FALSE; + //if(lttv_stats_load_statistics(statistic_viewer_data->stats)) + // statistic_viewer_data->calculate_stats = FALSE; } if(statistic_viewer_data->calculate_stats == FALSE){ @@ -363,7 +315,7 @@ void grab_focus(GtkWidget *widget, gpointer data) { StatisticViewerData *statistic_viewer_data = (StatisticViewerData *)data; MainWindow * mw = statistic_viewer_data->mw; - set_focused_pane(mw, gtk_widget_get_parent(statistic_viewer_data->hpaned_v)); + lttvwindow_report_focus(mw, gtk_widget_get_parent(statistic_viewer_data->hpaned_v)); } static void @@ -561,7 +513,8 @@ void show_statistic(StatisticViewerData * statistic_viewer_data, gboolean statistic_update_time_window(void * hook_data, void * call_data) { StatisticViewerData *statistic_viewer_data = (StatisticViewerData*) hook_data; - LttvTracesetContext * tsc = get_traceset_context(statistic_viewer_data->mw); + LttvTracesetContext * tsc = + lttvwindow_get_traceset_context(statistic_viewer_data->mw); //if statistic is already calculated, do nothing if(!statistic_viewer_data->calculate_stats){ @@ -577,14 +530,15 @@ gboolean statistic_update_time_window(void * hook_data, void * call_data) gboolean statistic_show_viewer(void * hook_data, void * call_data) { StatisticViewerData *statistic_viewer_data = (StatisticViewerData*) hook_data; - LttvTracesetContext * tsc = get_traceset_context(statistic_viewer_data->mw); + LttvTracesetContext * tsc = + lttvwindow_get_traceset_context(statistic_viewer_data->mw); if(statistic_viewer_data->shown == FALSE){ statistic_viewer_data->shown = TRUE; show_traceset_stats(statistic_viewer_data); if(statistic_viewer_data->calculate_stats){ statistic_remove_context_hooks(statistic_viewer_data,tsc); - lttv_stats_save_statistics((LttvTracesetStats*)tsc); + //lttv_stats_save_statistics((LttvTracesetStats*)tsc); } } @@ -595,8 +549,8 @@ gboolean statistic_traceset_changed(void * hook_data, void * call_data) { StatisticViewerData *statistic_viewer_data = (StatisticViewerData*) hook_data; - // gtk_tree_store_clear (statistic_viewer_data->store_m); - // statistic_viewer_data->shown = FALSE; + gtk_tree_store_clear (statistic_viewer_data->store_m); + statistic_viewer_data->shown = FALSE; return FALSE; } @@ -604,7 +558,7 @@ gboolean statistic_traceset_changed(void * hook_data, void * call_data) void statistic_add_context_hooks(StatisticViewerData * statistic_viewer_data, LttvTracesetContext * tsc) { - gint i, j, nbi, nb_tracefile, nb_control, nb_per_cpu; + gint i, j, nbi, nb_tracefile; LttTrace *trace; LttvTraceContext *tc; LttvTracefileContext *tfc; @@ -627,19 +581,14 @@ void statistic_add_context_hooks(StatisticViewerData * statistic_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, @@ -647,16 +596,14 @@ void statistic_add_context_hooks(StatisticViewerData * statistic_viewer_data, } } - //add state and stats hooks - //state_add_event_hooks_api(statistic_viewer_data->mw); //it will be added in the main window - stats_add_event_hooks_api(statistic_viewer_data->mw); + lttv_stats_add_event_hooks(LTTV_TRACESET_STATS(tsc)); } void statistic_remove_context_hooks(StatisticViewerData * statistic_viewer_data, LttvTracesetContext * tsc) { - gint i, j, nbi, nb_tracefile, nb_control, nb_per_cpu; + gint i, j, nbi, nb_tracefile; LttTrace *trace; LttvTraceContext *tc; LttvTracefileContext *tfc; @@ -679,19 +626,14 @@ void statistic_remove_context_hooks(StatisticViewerData * statistic_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, @@ -699,9 +641,57 @@ void statistic_remove_context_hooks(StatisticViewerData * statistic_viewer_data, } } - //remove state and stats hooks - //state_remove_event_hooks_api(statistic_viewer_data->mw); //it will be done in the main window - stats_remove_event_hooks_api(statistic_viewer_data->mw); + lttv_stats_remove_event_hooks(LTTV_TRACESET_STATS(tsc)); } +/** + * plugin's init function + * + * This function initializes the Statistic Viewer functionnality through the + * gtkTraceSet API. + */ +static void init() { + + statistic_traceset = g_ptr_array_new (); + + /* Register the toolbar insert button */ + lttvwindow_register_toolbar(hGuiStatisticInsert_xpm, "Insert Statistic Viewer", h_gui_statistic); + + /* Register the menu item insert entry */ + lttvwindow_register_menu("/", "Insert Statistic Viewer", h_gui_statistic); + +} + +void statistic_destroy_walk(gpointer data, gpointer user_data) +{ + gui_statistic_destructor((StatisticViewerData*)data); +} + +/** + * plugin's destroy function + * + * This function releases the memory reserved by the module and unregisters + * everything that has been registered in the gtkTraceSet API. + */ +static void destroy() { + int i; + + if(g_statistic_viewer_data_list){ + g_slist_foreach(g_statistic_viewer_data_list, statistic_destroy_walk, NULL ); + g_slist_free(g_statistic_viewer_data_list); + } + g_ptr_array_free (statistic_traceset, TRUE); + + /* Unregister the toolbar insert button */ + lttvwindow_unregister_toolbar(h_gui_statistic); + + /* Unregister the menu item insert entry */ + lttvwindow_unregister_menu(h_gui_statistic); +} + + +LTTV_MODULE("guistatistics", "Statistics viewer", \ + "Graphical module to view statistics about processes, CPUs and systems", \ + init, destroy, "lttvwindow") +