- GtkTreeIter iter;
- int i;
- GtkTreeModel *model = GTK_TREE_MODEL(Event_Viewer_Data->Store_M);
- GtkTreePath *Tree_Path;
- gchar *test_string;
-
-// if(Event_Number > Event_Viewer_Data->Last_Event ||
-// Event_Number + List_Height-1 < Event_Viewer_Data->First_Event ||
-// Event_Viewer_Data->First_Event == -1)
- {
- /* no event can be reused, clear and start from nothing */
- gtk_list_store_clear(Event_Viewer_Data->Store_M);
- for(i=Event_Number; i<Event_Number+List_Height; i++)
- {
- if(i>=Event_Viewer_Data->Number_Of_Events) break;
- /* Add a new row to the model */
- gtk_list_store_append (Event_Viewer_Data->Store_M, &iter);
- gtk_list_store_set (Event_Viewer_Data->Store_M, &iter,
- CPUID_COLUMN, 0,
- EVENT_COLUMN, "event irq",
- TIME_COLUMN, i,
- PID_COLUMN, 100,
- ENTRY_LEN_COLUMN, 17,
- EVENT_DESCR_COLUMN, "Detailed information",
- -1);
+ EventViewerData *event_viewer_data = (EventViewerData*) hook_data;
+
+ if(event_viewer_data->shown == FALSE){
+ event_viewer_data->shown = TRUE;
+ update_raw_data_array(event_viewer_data,
+ event_viewer_data->raw_trace_data_queue_tmp->length);
+
+ get_test_data(event_viewer_data->vadjust_c->value,
+ event_viewer_data->num_visible_events,
+ event_viewer_data);
+ //remove hooks from context
+ context_remove_hooks_api(event_viewer_data->mw, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL,event_viewer_data->before_event_hooks,NULL);
+ }
+
+ return FALSE;
+}
+
+void get_test_data(double time_value, guint list_height,
+ EventViewerData *event_viewer_data)
+{
+ GtkTreeIter iter;
+ int i;
+ GtkTreeModel *model = GTK_TREE_MODEL(event_viewer_data->store_m);
+ GtkTreePath *tree_path;
+ RawTraceData * raw_data;
+ ScrollDirection direction = SCROLL_NONE;
+ GList * first;
+ int event_number;
+ double value = event_viewer_data->previous_value - time_value;
+ LttTime start, end, time;
+ LttEvent * ev;
+ unsigned backward_num, minNum, maxNum;
+ LttTracefile * tf;
+ unsigned block_num, event_num;
+ unsigned size = 1, count = 0;
+ gboolean need_backward_again, backward;
+ GdkWindow * win;
+ GdkCursor * new;
+ GtkWidget* widget = gtk_widget_get_parent(event_viewer_data->hbox_v);
+
+ if(widget){
+ new = gdk_cursor_new(GDK_X_CURSOR);
+ win = gtk_widget_get_parent_window(widget);
+ gdk_window_set_cursor(win, new);
+ gdk_cursor_unref(new);
+ gdk_window_stick(win);
+ gdk_window_unstick(win);
+ }
+
+
+ // if(event_number > event_viewer_data->last_event ||
+ // event_number + list_height-1 < event_viewer_data->first_event ||
+ // event_viewer_data->first_event == -1)
+ {
+ /* no event can be reused, clear and start from nothing */
+ if(value == -1.0) direction = SCROLL_STEP_DOWN;
+ else if(value == 1.0 ) direction = SCROLL_STEP_UP;
+ else if(value == -2.0) direction = SCROLL_PAGE_DOWN;
+ else if(value == 2.0 ) direction = SCROLL_PAGE_UP;
+ else if(value == 0.0 ) direction = SCROLL_NONE;
+ else direction = SCROLL_JUMP;
+
+ switch(direction){
+ case SCROLL_STEP_UP:
+ case SCROLL_PAGE_UP:
+ if(direction == SCROLL_PAGE_UP){
+ backward = list_height>event_viewer_data->start_event_index ? TRUE : FALSE;
+ }else{
+ backward = event_viewer_data->start_event_index == 0 ? TRUE : FALSE;
+ }
+ if(backward){
+ event_viewer_data->append = FALSE;
+ do{
+ if(direction == SCROLL_PAGE_UP){
+ minNum = list_height - event_viewer_data->start_event_index ;
+ }else{
+ minNum = 1;
+ }
+
+ first = event_viewer_data->raw_trace_data_queue->head;
+ raw_data = (RawTraceData*)g_list_nth_data(first,0);
+ end = raw_data->time;
+ end.tv_nsec--;
+ ltt_event_position_get(raw_data->ep, &block_num, &event_num, &tf);
+ if(size !=0){
+ if(event_num > minNum){
+ backward_num = event_num > RESERVE_SMALL_SIZE
+ ? event_num - RESERVE_SMALL_SIZE : 1;
+ ltt_event_position_set(raw_data->ep, block_num, backward_num);
+ ltt_tracefile_seek_position(tf, raw_data->ep);
+ ev = ltt_tracefile_read(tf);
+ start = ltt_event_time(ev);
+ maxNum = G_MAXULONG;
+ }else{
+ if(block_num > 1){
+ ltt_event_position_set(raw_data->ep, block_num-1, 1);
+ ltt_tracefile_seek_position(tf, raw_data->ep);
+ ev = ltt_tracefile_read(tf);
+ start = ltt_event_time(ev);
+ }else{
+ start.tv_sec = 0;
+ start.tv_nsec = 0;