X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2FguiEvents.c;h=490e9175378cfc666c6b8e6b06e70117966cb40b;hb=1b238973d103680c4f5c37e030afc3314aa96804;hp=89df4511e19276abd86f36e269c388e0b322f7bf;hpb=a6b3623edf87fccfbaf201e70c720d52f89a77fe;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/guiEvents.c b/ltt/branches/poly/lttv/modules/guiEvents.c index 89df4511..490e9175 100644 --- a/ltt/branches/poly/lttv/modules/guiEvents.c +++ b/ltt/branches/poly/lttv/modules/guiEvents.c @@ -96,6 +96,7 @@ typedef struct _EventViewerData { unsigned end_event_index; //the last event shown in the window unsigned size; //maxi number of events loaded when instance the viewer gboolean shown; //indicate if event detail is shown or not + gboolean current_time_updated; char * filter_key; //scroll window containing Tree View @@ -408,7 +409,9 @@ gui_events(MainWindow *parent_window, LttvTracesetSelector * s,char* key ) /* Create vertical scrollbar and pack it */ event_viewer_data->vscroll_vc = gtk_vscrollbar_new(NULL); gtk_range_set_update_policy (GTK_RANGE(event_viewer_data->vscroll_vc), - GTK_UPDATE_DISCONTINUOUS); + GTK_UPDATE_CONTINUOUS); + // Changed by MD : more user friendly :) + //GTK_UPDATE_DISCONTINUOUS); gtk_box_pack_start(GTK_BOX(event_viewer_data->hbox_v), event_viewer_data->vscroll_vc, FALSE, TRUE, 0); /* Get the vertical scrollbar's adjustment */ @@ -457,6 +460,7 @@ gui_events(MainWindow *parent_window, LttvTracesetSelector * s,char* key ) // tree_v_set_cursor(event_viewer_data); event_viewer_data->shown = FALSE; + event_viewer_data->current_time_updated = FALSE; event_viewer_data->size = RESERVE_SMALL_SIZE; g_object_set_data( G_OBJECT(event_viewer_data->hbox_v), @@ -680,7 +684,7 @@ void tree_v_cursor_changed_cb (GtkWidget *widget, gpointer data) /* On cursor change, modify the currently selected event by calling * the right API function */ tree_v_get_cursor(event_viewer_data); -/* + gtk_tree_view_get_cursor(GTK_TREE_VIEW(event_viewer_data->tree_v), &path, NULL); if(gtk_tree_model_get_iter(model,&iter,path)){ gtk_tree_model_get(model, &iter, TIME_COLUMN, &time, -1); @@ -688,12 +692,14 @@ void tree_v_cursor_changed_cb (GtkWidget *widget, gpointer data) ltt_time.tv_nsec = time % NANOSECONDS_PER_SECOND; if(ltt_time.tv_sec != event_viewer_data->current_time.tv_sec || - ltt_time.tv_nsec != event_viewer_data->current_time.tv_nsec) + ltt_time.tv_nsec != event_viewer_data->current_time.tv_nsec){ + event_viewer_data->current_time_updated = TRUE; set_current_time(event_viewer_data->mw,<t_time); + } }else{ g_warning("Can not get iter\n"); } -*/ + } @@ -1421,6 +1427,12 @@ gboolean update_current_time(void * hook_data, void * call_data) GtkTreePath* path; char str_path[64]; int i, j; + LttTime t; + + if(event_viewer_data->current_time_updated ){ + event_viewer_data->current_time_updated = FALSE; + return FALSE; + } //check if the event is shown in the current viewer if(gtk_tree_model_get_iter_first(model, &iter)){ @@ -1461,23 +1473,27 @@ gboolean update_current_time(void * hook_data, void * call_data) if(event_viewer_data->raw_trace_data_queue->length-count < event_viewer_data->num_visible_events){ j = event_viewer_data->raw_trace_data_queue->length - event_viewer_data->num_visible_events; count -= j; + data = (RawTraceData*)g_list_nth_data(list,j); }else{ j = count; count = 0; } + t = ltt_time_sub(data->time, event_viewer_data->time_span.startTime); + event_viewer_data->vadjust_c->value = ltt_time_to_double(t) * NANOSECONDS_PER_SECOND; + g_signal_stop_emission_by_name(G_OBJECT(event_viewer_data->vadjust_c), "value-changed"); + event_viewer_data->previous_value = event_viewer_data->vadjust_c->value; insert_data_into_model(event_viewer_data,j, j+event_viewer_data->num_visible_events); }else{//the event is not in the buffer LttTime start = ltt_time_sub(event_viewer_data->current_time, event_viewer_data->time_span.startTime); double position = ltt_time_to_double(start) * NANOSECONDS_PER_SECOND; - get_test_data(position, - event_viewer_data->num_visible_events, - event_viewer_data); + gtk_adjustment_set_value(event_viewer_data->vadjust_c, position); } } sprintf(str_path,"%d\0",count); path = gtk_tree_path_new_from_string (str_path); gtk_tree_view_set_cursor(GTK_TREE_VIEW(event_viewer_data->tree_v), path, NULL, FALSE); + g_signal_stop_emission_by_name(G_OBJECT(event_viewer_data->tree_v), "cursor-changed"); gtk_tree_path_free(path); return FALSE;