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
/* 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 */
// 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),
/* 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);
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");
}
-*/
+
}
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)){
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;