X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Flttvwindow%2Flttvwindow%2Finit_module.c;h=21a30eedaaa354dbef12304f8772a6255fc39638;hb=45653836d75635b5b841d0d03f1f0789348adc56;hp=c7eb229ea722d87ad7ff11b469061f1711a896eb;hpb=8bc02ec867a018f18cda9fe362f8e49ca6db7c81;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/init_module.c b/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/init_module.c index c7eb229e..21a30eed 100644 --- a/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/init_module.c +++ b/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/init_module.c @@ -50,12 +50,14 @@ LttvTraceInfo LTTV_TRACES, LTTV_COMPUTATION, + LTTV_VIEWER_CONSTRUCTORS, LTTV_REQUESTS_QUEUE, LTTV_REQUESTS_CURRENT, LTTV_NOTIFY_QUEUE, LTTV_NOTIFY_CURRENT, LTTV_COMPUTATION_TRACESET, LTTV_COMPUTATION_TRACESET_CONTEXT, + LTTV_COMPUTATION_SYNC_POSITION, LTTV_BEFORE_CHUNK_TRACESET, LTTV_BEFORE_CHUNK_TRACE, LTTV_BEFORE_CHUNK_TRACEFILE, @@ -66,8 +68,11 @@ LttvTraceInfo LTTV_TRACES, LTTV_AFTER_REQUEST, LTTV_EVENT_HOOK, LTTV_EVENT_HOOK_BY_ID, + LTTV_HOOK_ADDER, + LTTV_HOOK_REMOVER, LTTV_IN_PROGRESS, - LTTV_READY; + LTTV_READY, + LTTV_LOCK; /** Array containing instanced objects. */ @@ -85,15 +90,18 @@ static char *a_trace; void lttv_trace_option(void *hook_data) { LttTrace *trace; - gchar *abs_path; + gchar abs_path[PATH_MAX]; get_absolute_pathname(a_trace, abs_path); g_init_trace = lttvwindowtraces_get_trace_by_name(abs_path); if(g_init_trace == NULL) { trace = ltt_trace_open(abs_path); - if(trace == NULL) g_critical("cannot open trace %s", abs_path); - g_init_trace = lttv_trace_new(trace); - lttvwindowtraces_add_trace(g_init_trace); + if(trace == NULL) { + g_warning("cannot open trace %s", abs_path); + } else { + g_init_trace = lttv_trace_new(trace); + lttvwindowtraces_add_trace(g_init_trace); + } } } @@ -138,6 +146,7 @@ static void init() { LTTV_TRACES = g_quark_from_string("traces"); LTTV_COMPUTATION = g_quark_from_string("computation"); + LTTV_VIEWER_CONSTRUCTORS = g_quark_from_string("viewer_constructors"); LTTV_REQUESTS_QUEUE = g_quark_from_string("requests_queue"); LTTV_REQUESTS_CURRENT = g_quark_from_string("requests_current"); LTTV_NOTIFY_QUEUE = g_quark_from_string("notify_queue"); @@ -145,6 +154,8 @@ static void init() { LTTV_COMPUTATION_TRACESET = g_quark_from_string("computation_traceset"); LTTV_COMPUTATION_TRACESET_CONTEXT = g_quark_from_string("computation_traceset_context"); + LTTV_COMPUTATION_SYNC_POSITION = + g_quark_from_string("computation_sync_position"); LTTV_BEFORE_CHUNK_TRACESET = g_quark_from_string("before_chunk_traceset"); LTTV_BEFORE_CHUNK_TRACE = g_quark_from_string("before_chunk_trace"); LTTV_BEFORE_CHUNK_TRACEFILE = g_quark_from_string("before_chunk_tracefile"); @@ -155,8 +166,11 @@ static void init() { LTTV_AFTER_REQUEST = g_quark_from_string("after_request"); LTTV_EVENT_HOOK = g_quark_from_string("event_hook"); LTTV_EVENT_HOOK_BY_ID = g_quark_from_string("event_hook_by_id"); + LTTV_HOOK_ADDER = g_quark_from_string("hook_adder"); + LTTV_HOOK_REMOVER = g_quark_from_string("hook_remover"); LTTV_IN_PROGRESS = g_quark_from_string("in_progress"); LTTV_READY = g_quark_from_string("ready"); + LTTV_LOCK = g_quark_from_string("lock"); g_debug("GUI init()"); @@ -171,6 +185,45 @@ static void init() { lttv_hooks_add(main_hooks, window_creation_hook, NULL, LTTV_PRIO_DEFAULT); + { + /* Register state calculator */ + LttvHooks *hook_adder = lttv_hooks_new(); + lttv_hooks_add(hook_adder, lttv_state_save_hook_add_event_hooks, NULL, + LTTV_PRIO_DEFAULT); + lttv_hooks_add(hook_adder, lttv_state_hook_add_event_hooks, NULL, + LTTV_PRIO_DEFAULT); + LttvHooks *hook_remover = lttv_hooks_new(); + lttv_hooks_add(hook_remover, lttv_state_save_hook_remove_event_hooks, + NULL, LTTV_PRIO_DEFAULT); + lttv_hooks_add(hook_remover, lttv_state_hook_remove_event_hooks, + NULL, LTTV_PRIO_DEFAULT); + /* Add state computation background hook adder to attributes */ + lttvwindowtraces_register_computation_hooks(g_quark_from_string("state"), + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + hook_adder, hook_remover); + } + + { + /* Register statistics calculator */ + LttvHooks *hook_adder = lttv_hooks_new(); + lttv_hooks_add(hook_adder, lttv_stats_hook_add_event_hooks, NULL, + LTTV_PRIO_DEFAULT); + lttv_hooks_add(hook_adder, lttv_state_hook_add_event_hooks, NULL, + LTTV_PRIO_DEFAULT); + LttvHooks *hook_remover = lttv_hooks_new(); + lttv_hooks_add(hook_remover, lttv_stats_hook_remove_event_hooks, + NULL, LTTV_PRIO_DEFAULT); + lttv_hooks_add(hook_remover, lttv_state_hook_remove_event_hooks, + NULL, LTTV_PRIO_DEFAULT); + LttvHooks *after_request = lttv_hooks_new(); + lttv_hooks_add(after_request, lttv_stats_sum_traceset_hook, NULL, + LTTV_PRIO_DEFAULT); + /* Add state computation background hook adder to attributes */ + lttvwindowtraces_register_computation_hooks(g_quark_from_string("stats"), + NULL, NULL, NULL, NULL, NULL, NULL, NULL, + after_request, NULL, NULL, + hook_adder, hook_remover); + } } void @@ -180,6 +233,10 @@ main_window_destructor(MainWindow * mw) gtk_widget_destroy(mw->mwindow); } +static void destroy_walk(gpointer data, gpointer user_data) +{ + main_window_destructor((MainWindow*)data); +} /** * plugin's destroy function @@ -199,12 +256,9 @@ static void destroy() { g_debug("GUI destroy()"); - if(g_main_window_list){ - for(iter=g_main_window_list;iter!=NULL;iter=g_slist_next(iter)) { - main_window_destructor((MainWindow*)iter->data); - } - g_slist_free(g_main_window_list); - } + g_slist_foreach(g_main_window_list, destroy_walk, NULL); + + g_slist_free(g_main_window_list); }