X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=lttv%2Fmodules%2Fgui%2Flttvwindow%2Flttvwindow%2Fcallbacks.c;h=872cd75bbeb26f34310e80c0de71fe889b8f4f6d;hb=8924e3e4b9f77267572f4fe0d4430748c27e66ea;hp=123cb7a23da557213aa95204029ea927814cc737;hpb=a7598d50739159e9f33f60d3b23980db447f6d5d;p=lttv.git diff --git a/lttv/modules/gui/lttvwindow/lttvwindow/callbacks.c b/lttv/modules/gui/lttvwindow/lttvwindow/callbacks.c index 123cb7a2..872cd75b 100644 --- a/lttv/modules/gui/lttvwindow/lttvwindow/callbacks.c +++ b/lttv/modules/gui/lttvwindow/lttvwindow/callbacks.c @@ -38,6 +38,7 @@ #include #include #include +#include #ifdef BABEL_CLEANUP #include #include @@ -282,7 +283,7 @@ int SetTraceset(Tab * tab, LttvTraceset *traceset) } #endif /*BABEL_CLEANUP*/ - time_span = lttv_traceset_get_time_span(traceset); + time_span = lttv_traceset_get_time_span_real(traceset); tab->traceset_info->traceset = traceset; @@ -315,6 +316,44 @@ int SetTraceset(Tab * tab, LttvTraceset *traceset) } lttv_state_add_event_hooks(traceset); + //TODO ybrosseau 2012-08-03 Temporarly compute checkpoints right at the adding + // of the traceset + //Compute the traceset state checkpoint + { + + EventsRequest *events_request = g_new(EventsRequest, 1); + + LttvHooks *hook_adder = lttv_hooks_new(); + lttv_hooks_add(hook_adder, lttv_state_save_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); + + // Fill the events request + events_request->owner = NULL; + events_request->viewer_data = NULL; + events_request->servicing = FALSE; + events_request->start_time = ltt_time_zero; + events_request->start_position = NULL; + events_request->stop_flag = FALSE; + events_request->end_time = ltt_time_infinite; + events_request->num_events = G_MAXUINT; + events_request->end_position = NULL; + events_request->trace = 1; //fixed /* FIXME */ + events_request->before_chunk_traceset = NULL; + events_request->before_chunk_trace = NULL; + events_request->before_chunk_tracefile = NULL; + events_request->event = traceset->event_hooks; + events_request->after_chunk_tracefile = NULL; + events_request->after_chunk_trace = NULL; + events_request->after_chunk_traceset = NULL; + events_request->before_request = hook_adder; + events_request->after_request = hook_remover; + + lttvwindow_events_request(tab, events_request); + } + /* Finally, call the update hooks of the viewers */ gint retval = update_traceset(tab, traceset); @@ -937,8 +976,7 @@ gboolean lttvwindow_process_pending_requests(Tab *tab) /* - Seek to that time */ g_debug("SEEK TIME : %lu, %lu", events_request->start_time.tv_sec, events_request->start_time.tv_nsec); - //lttv_process_traceset_seek_time(tsc, events_request->start_time); - lttv_process_traceset_seek_time(ts, + lttv_state_traceset_seek_time_closest(ts, events_request->start_time); /* Process the traceset with only state hooks */ @@ -954,7 +992,7 @@ gboolean lttvwindow_process_pending_requests(Tab *tab) } else { - //LttTime pos_time; + LttTime pos_time; //LttvTracefileContext *tfc = // lttv_traceset_context_get_current_tfc(tsc); /* Else, the first request in list_in is a position request */ @@ -982,12 +1020,12 @@ gboolean lttvwindow_process_pending_requests(Tab *tab) /* 1.2.2.1 Seek to that position */ g_debug("SEEK POSITION"); //lttv_process_traceset_seek_position(tsc, events_request->start_position); - //pos_time = lttv_traceset_position_get_time( - // events_request->start_position); - // - //lttv_state_traceset_seek_time(ts, - // pos_time); - lttv_traceset_seek_to_position( events_request->start_position); + pos_time = lttv_traceset_position_get_time( + events_request->start_position); + + lttv_state_traceset_seek_time_closest(ts, + pos_time); + //lttv_traceset_seek_to_position( events_request->start_position); /* Process the traceset with only state hooks */ #ifdef DEBUG @@ -1039,11 +1077,8 @@ gboolean lttvwindow_process_pending_requests(Tab *tab) lttv_hooks_call(events_request->before_chunk_traceset, ts); - lttv_trace_add_hooks(trace, - events_request->before_chunk_trace, - - events_request->event - ); + lttv_trace_add_hooks(trace, events_request->before_chunk_trace, + events_request->event); } } } @@ -1079,7 +1114,6 @@ gboolean lttvwindow_process_pending_requests(Tab *tab) lttv_trace_add_hooks(trace, events_request->before_chunk_trace, - events_request->event ); } @@ -1269,9 +1303,8 @@ gboolean lttvwindow_process_pending_requests(Tab *tab) /* 5. After process traceset middle */ LttTime curTime = lttv_traceset_get_current_time(ts); - /* - if current context time > traceset.end time */ - if(ltt_time_compare(curTime, - lttv_traceset_get_time_span_real(ts).end_time) > 0) { + /* - if the iterator is not valid anymore (got to the end) */ + if(bt_ctf_iter_read_event(ts->iter) == NULL) { /* - For each req in list_in */ GSList *iter = list_in; @@ -2102,11 +2135,11 @@ void save_as(GtkWidget * widget, gpointer user_data) void zoom(GtkWidget * widget, double size) { -#ifdef BABEL_CLEANUP + TimeInterval time_span; TimeWindow new_time_window; LttTime current_time, time_delta; - LttvTracesetContext *tsc; + LttvTraceset *ts; GtkWidget * notebook = lookup_widget(widget, "MNotebook"); GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), @@ -2123,8 +2156,8 @@ void zoom(GtkWidget * widget, double size) if(size == 1) return; - tsc = LTTV_TRACESET_CONTEXT(tab->traceset_info->traceset_context); - time_span = tsc->time_span; + ts = lttvwindow_get_traceset(tab); + time_span = lttv_traceset_get_time_span_real(ts); new_time_window = tab->time_window; current_time = tab->current_time; @@ -2186,8 +2219,6 @@ void zoom(GtkWidget * widget, double size) } else { time_change_manager(tab, new_time_window); } - -#endif /* BABEL_CLEANUP */ } void zoom_in(GtkWidget * widget, gpointer user_data) @@ -3292,9 +3323,8 @@ void time_change_manager (Tab *tab, TimeInterval time_span; LttvTraceset *ts = tab->traceset_info->traceset; - time_span.start_time =ltt_time_from_uint64( lttv_traceset_get_timestamp_begin(ts)); - time_span.end_time = ltt_time_from_uint64(lttv_traceset_get_timestamp_end(ts)); + time_span = lttv_traceset_get_time_span_real(ts); LttTime start_time = new_time_window.start_time; LttTime end_time = new_time_window.end_time; @@ -3388,9 +3418,9 @@ void current_position_change_manager(Tab *tab, LttvTracesetPosition *pos) LttTime new_time = lttv_traceset_position_get_time(pos); /* Put the context in a state coherent position */ -#ifdef BABEL_CLEANUP - lttv_state_traceset_seek_time_closest((LttvTracesetState*)tsc, ltt_time_zero); -#endif /* BABEL_CLEANUP */ + + lttv_state_traceset_seek_time_closest(tab->traceset_info->traceset, ltt_time_zero); + current_time_change_manager(tab, new_time); set_current_position(tab, pos); @@ -3401,7 +3431,7 @@ static void on_timebar_starttime_changed(Timebar *timebar, { Tab *tab = (Tab *)user_data; LttvTraceset * ts =tab->traceset_info->traceset; - TimeInterval time_span = lttv_traceset_get_time_span(ts); + TimeInterval time_span = lttv_traceset_get_time_span_real(ts); TimeWindow new_time_window = tab->time_window; new_time_window.start_time = timebar_get_start_time(timebar); @@ -3437,7 +3467,7 @@ static void on_timebar_endtime_changed(Timebar *timebar, { Tab *tab = (Tab *)user_data; LttvTraceset * ts =tab->traceset_info->traceset; - TimeInterval time_span = lttv_traceset_get_time_span(ts); + TimeInterval time_span = lttv_traceset_get_time_span_real(ts); TimeWindow new_time_window = tab->time_window; @@ -3488,7 +3518,7 @@ void scroll_value_changed_cb(GtkWidget *scrollbar, gdouble page_size; LttvTraceset * ts = tab->traceset_info->traceset; - TimeInterval time_span = lttv_traceset_get_time_span(ts); + TimeInterval time_span = lttv_traceset_get_time_span_real(ts); time = ltt_time_add(ltt_time_from_double(value), time_span.start_time);