- second_data = Event_Viewer_Data->raw_trace_data == Event_Viewer_Data->raw_trace_data_first
- ? Event_Viewer_Data->raw_trace_data_second : Event_Viewer_Data->raw_trace_data_first;
-
- // get the right time period
- for(i=0;i<Event_Viewer_Data->time_period->len;i++){
- time_period = g_ptr_array_index(Event_Viewer_Data->time_period, i);
- scroll_period = i;
- if(Event_Number > time_period->end_event_number)continue;
- if(Event_Number + List_Height <= time_period->end_event_number){
- if(Event_Viewer_Data->current_period == scroll_period -1){
- scroll_period--;
- }
- }
- break;
- }
-
- period_diff = scroll_period - Event_Viewer_Data->current_period;
- if(period_diff == 0) direction = SCROLL_IN_SAME_PERIOD;
- else if(period_diff == -1) direction = SCROLL_UP_ONE_PERIOD;
- else if(period_diff < -1) direction = SCROLL_UP_MORE_PERIOD;
- else if(period_diff == 1) direction = SCROLL_DOWN_ONE_PERIOD;
- else if(period_diff > 1) direction = SCROLL_DOWN_MORE_PERIOD;
- Event_Viewer_Data->current_period += period_diff;
-
- //scroll up
- if(Event_Number < Event_Viewer_Data->start_event_number){
- if(direction == SCROLL_UP_ONE_PERIOD){
- // Event_Viewer_Data->current_period--;
- Event_Viewer_Data->end_event_number -= second_data->len;
- free_ptr_array(second_data);
- if(Event_Viewer_Data->raw_trace_data == Event_Viewer_Data->raw_trace_data_first){
- Event_Viewer_Data->raw_trace_data_second = g_ptr_array_sized_new(RESERVE_SIZE);
- Event_Viewer_Data->raw_trace_data = Event_Viewer_Data->raw_trace_data_second;
- }else{
- Event_Viewer_Data->raw_trace_data_first = g_ptr_array_sized_new(RESERVE_SIZE);
- Event_Viewer_Data->raw_trace_data = Event_Viewer_Data->raw_trace_data_first;
- }
- time_period = g_ptr_array_index(Event_Viewer_Data->time_period,
- Event_Viewer_Data->current_period);
- get_events(Event_Viewer_Data, time_period->start, time_period->end,RESERVE_SIZE);
- raw_data = g_ptr_array_index(Event_Viewer_Data->raw_trace_data,
- Event_Viewer_Data->raw_trace_data->len-1);
- Event_Viewer_Data->start_event_number -= Event_Viewer_Data->raw_trace_data->len;
- }else{//direction = SCROLL_UP_MORE_PERIOD
- free_ptr_array(second_data);
- free_ptr_array(Event_Viewer_Data->raw_trace_data);
- Event_Viewer_Data->raw_trace_data_first = g_ptr_array_sized_new(RESERVE_SIZE);
- Event_Viewer_Data->raw_trace_data_second = g_ptr_array_sized_new(RESERVE_SIZE);
-
- Event_Viewer_Data->raw_trace_data = Event_Viewer_Data->raw_trace_data_first;
- time_period = g_ptr_array_index(Event_Viewer_Data->time_period,
- Event_Viewer_Data->current_period);
- get_events(Event_Viewer_Data, time_period->start, time_period->end,RESERVE_SIZE);
- Event_Viewer_Data->start_event_number = time_period->start_event_number;
-
- Event_Viewer_Data->raw_trace_data = Event_Viewer_Data->raw_trace_data_second;
- time_period = g_ptr_array_index(Event_Viewer_Data->time_period,
- Event_Viewer_Data->current_period + 1);
- get_events(Event_Viewer_Data, time_period->start, time_period->end,RESERVE_SIZE);
- Event_Viewer_Data->end_event_number = time_period->end_event_number;
-
- Event_Viewer_Data->raw_trace_data = Event_Viewer_Data->raw_trace_data_first;
- }
- }
- //scroll down
- else if(Event_Number+List_Height >= Event_Viewer_Data->end_event_number){
- if(direction == SCROLL_DOWN_ONE_PERIOD){
- //Event_Viewer_Data->current_period++;
- Event_Viewer_Data->start_event_number += Event_Viewer_Data->raw_trace_data->len;
- free_ptr_array(Event_Viewer_Data->raw_trace_data);
- if(second_data == Event_Viewer_Data->raw_trace_data_first){
- Event_Viewer_Data->raw_trace_data_second = g_ptr_array_sized_new(RESERVE_SIZE);
- Event_Viewer_Data->raw_trace_data = Event_Viewer_Data->raw_trace_data_second;