X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;ds=sidebyside;f=lttv%2Fmodules%2Fgui%2Fdetailedevents%2Fevents.c;h=27330c8d1cd58fe4a81442c176adb29704efa736;hb=9aaa78dc9323698c4c44e5aaa24322d0c9e26dab;hp=0c1a153a935c03dff8c33390a01725f709b3b1fa;hpb=8d8c5ea79a434752faf43cd66acc38196d25268d;p=lttv.git diff --git a/lttv/modules/gui/detailedevents/events.c b/lttv/modules/gui/detailedevents/events.c index 0c1a153a..27330c8d 100644 --- a/lttv/modules/gui/detailedevents/events.c +++ b/lttv/modules/gui/detailedevents/events.c @@ -99,6 +99,7 @@ gboolean update_current_time(void * hook_data, void * call_data); gboolean update_current_position(void * hook_data, void * call_data); //gboolean show_event_detail(void * hook_data, void * call_data); gboolean traceset_changed(void * hook_data, void * call_data); +gboolean timespan_changed(void * hook_data, void * call_data); gboolean filter_changed(void * hook_data, void * call_data); static void request_background_data(EventViewerData *event_viewer_data); @@ -183,6 +184,11 @@ h_gui_events(LttvPlugin *plugin) EventViewerData * gui_events(LttvPluginTab *ptab) { + /*To disable the error bell when we reach the end(or the top) of the list of + event. Since we overload the management of the list*/ + GtkSettings* gtk_settings = gtk_settings_get_default(); + g_object_set(gtk_settings, "gtk-error-bell", FALSE, NULL); + LttTime end; GtkTreeViewColumn *column; GtkCellRenderer *renderer; @@ -211,6 +217,8 @@ gui_events(LttvPluginTab *ptab) update_current_position,event_viewer_data); lttvwindow_register_traceset_notify(tab, traceset_changed,event_viewer_data); + lttvwindow_register_timespan_notify(tab, + timespan_changed,event_viewer_data); lttvwindow_register_filter_notify(tab, filter_changed, event_viewer_data); lttvwindow_register_redraw_notify(tab, @@ -449,12 +457,14 @@ gui_events(LttvPluginTab *ptab) g_signal_connect (G_OBJECT (event_viewer_data->vadjust_c), "value-changed", G_CALLBACK (v_scroll_cb), event_viewer_data); + //TODO ybrosseau 2011-01-06: Fix comment /* Set the upper bound to the last event number */ event_viewer_data->previous_value = 0; event_viewer_data->vadjust_c->lower = 0.0; //event_viewer_data->vadjust_c->upper = event_viewer_data->number_of_events; LttTime time = lttvwindow_get_current_time(tab); time = ltt_time_sub(time, tsc->time_span.start_time); + //TODO ybrosseau 2011-01-06: Which one do we keep? event_viewer_data->vadjust_c->value = ltt_time_to_double(time); event_viewer_data->vadjust_c->value = 0.0; event_viewer_data->vadjust_c->step_increment = 1.0; @@ -1406,15 +1416,14 @@ static void get_events(double new_value, EventViewerData *event_viewer_data) /* Get the beginning position of the read (with seek backward or seek forward) */ if(relative_position > 0) { - guint count; - count = lttv_process_traceset_seek_n_forward(tsc, relative_position, + + lttv_process_traceset_seek_n_forward(tsc, relative_position, events_check_handler, &event_viewer_data->tab->stop_foreground, event_viewer_data->main_win_filter, event_viewer_data->filter, NULL, event_viewer_data); } else if(relative_position < 0) { - guint count; - + /* Get an idea of currently shown event dispersion */ LttTime first_event_time = lttv_traceset_context_position_get_time(event_viewer_data->first_event); @@ -1424,7 +1433,7 @@ static void get_events(double new_value, EventViewerData *event_viewer_data) if(ltt_time_compare(time_diff, ltt_time_zero) == 0) time_diff = seek_back_default_offset; - count = lttv_process_traceset_seek_n_backward(tsc, + lttv_process_traceset_seek_n_backward(tsc, abs(relative_position), time_diff, (seek_time_fct)lttv_state_traceset_seek_time_closest, @@ -1769,7 +1778,27 @@ gboolean update_current_position(void * hook_data, void * call_data) return FALSE; } +gboolean timespan_changed(void * hook_data, void * call_data) +{ + EventViewerData *event_viewer_data = (EventViewerData*) hook_data; + LttvTracesetContext * tsc = + lttvwindow_get_traceset_context(event_viewer_data->tab); + TimeInterval time_span = tsc->time_span; + + LttTime end; + + end = ltt_time_sub(time_span.end_time, time_span.start_time); + event_viewer_data->vadjust_c->upper = ltt_time_to_double(end); + if(event_viewer_data->pos->len < event_viewer_data->num_visible_events ) { + + + get_events(event_viewer_data->vadjust_c->value, event_viewer_data); + + request_background_data(event_viewer_data); + } + return FALSE; +} gboolean traceset_changed(void * hook_data, void * call_data) { @@ -1863,6 +1892,8 @@ void gui_events_free(gpointer data) // show_event_detail, event_viewer_data); lttvwindow_unregister_traceset_notify(tab, traceset_changed, event_viewer_data); + lttvwindow_unregister_timespan_notify(tab, + timespan_changed,event_viewer_data); lttvwindow_unregister_filter_notify(tab, filter_changed, event_viewer_data); lttvwindow_unregister_redraw_notify(tab,