g_object_set(G_OBJECT(adjustment),
"lower",
- ltt_time_to_double(time_span.start_time)
- * NANOSECONDS_PER_SECOND, /* lower */
+ 0, /* lower */
"upper",
- ltt_time_to_double(time_span.end_time)
+ ltt_time_to_double(
+ ltt_time_sub(time_span.end_time, time_span.start_time))
* NANOSECONDS_PER_SECOND, /* upper */
"step_increment",
ltt_time_to_double(tab->time_window.time_width)
g_object_set(G_OBJECT(adjustment),
"value",
- ltt_time_to_double(tab->time_window.start_time)
- * NANOSECONDS_PER_SECOND, /* value */
+ ltt_time_to_double(
+ ltt_time_sub(tab->time_window.start_time, time_span.start_time))
+ * NANOSECONDS_PER_SECOND, /* value */
NULL);
gtk_adjustment_value_changed(adjustment);
/* Events processing algorithm implementation */
+ /* Warning : the gtk_events_pending takes a LOT of cpu time. So what we do
+ * instead is to leave the control to GTK and take it back.
+ */
/* A. Servicing loop */
- while( (g_slist_length(list_in) != 0 || g_slist_length(list_out) != 0)) {
- /* && !gtk_events_pending() ) */
-
+ //while( (g_slist_length(list_in) != 0 || g_slist_length(list_out) != 0)) {
+ if((g_slist_length(list_in) != 0 || g_slist_length(list_out) != 0)) {
+ /* Servicing */
/* 1. If list_in is empty (need a seek) */
if( g_slist_length(list_in) == 0 ) {
events_request->event,
events_request->event_by_id);
}
-
+
/* Go to next */
if(remove)
{
count = lttv_process_traceset_middle(tsc, end_time, end_nb_events, end_position);
tfc = lttv_traceset_context_get_current_tfc(tsc);
- g_debug("Context time after middle : %lu, %lu", tfc->timestamp.tv_sec,
+ if(tfc != NULL)
+ g_debug("Context time after middle : %lu, %lu", tfc->timestamp.tv_sec,
tfc->timestamp.tv_nsec);
+ else
+ g_debug("End of trace reached after middle.");
}
{
}
}
}
-
- if(gtk_events_pending()) break;
}
+ /* End of removed servicing loop : leave control to GTK instead. */
+ // if(gtk_events_pending()) break;
+ //}
/* B. When interrupted between chunks */
//ltt_time_to_double(new_time_window.start_time)
// * NANOSECONDS_PER_SECOND, /* value */
"lower",
- ltt_time_to_double(time_span.start_time)
- * NANOSECONDS_PER_SECOND, /* lower */
+ 0, /* lower */
"upper",
- ltt_time_to_double(time_span.end_time)
+ ltt_time_to_double(
+ ltt_time_sub(time_span.end_time, time_span.start_time))
* NANOSECONDS_PER_SECOND, /* upper */
"step_increment",
ltt_time_to_double(new_time_window.time_width)
//gtk_adjustment_value_changed(adjustment);
g_object_set(G_OBJECT(adjustment),
"value",
- ltt_time_to_double(new_time_window.start_time)
+ ltt_time_to_double(
+ ltt_time_sub(new_time_window.start_time, time_span.start_time))
* NANOSECONDS_PER_SECOND, /* value */
NULL);
gtk_adjustment_value_changed(adjustment);
{
Tab *tab = (Tab *)user_data;
TimeWindow time_window;
- TimeInterval *time_span;
LttTime time;
GtkAdjustment *adjust = gtk_range_get_adjustment(GTK_RANGE(scrollbar));
gdouble value = gtk_adjustment_get_value(adjust);
gdouble upper, lower, ratio, page_size;
LttvTracesetContext * tsc =
LTTV_TRACESET_CONTEXT(tab->traceset_info->traceset_context);
+ TimeInterval time_span = tsc->time_span;
//time_window = tab->time_window;
- time_span = &tsc->time_span ;
lower = adjust->lower;
upper = adjust->upper;
ratio = (value - lower) / (upper - lower);
//time = ltt_time_sub(time_span->end_time, time_span->start_time);
//time = ltt_time_mul(time, (float)ratio);
//time = ltt_time_add(time_span->start_time, time);
- time = ltt_time_from_double(value/NANOSECONDS_PER_SECOND);
+ time = ltt_time_add(ltt_time_from_double(value/NANOSECONDS_PER_SECOND),
+ time_span.start_time);
time_window.start_time = time;
time_window.time_width =
ltt_time_from_double(page_size/NANOSECONDS_PER_SECOND);
- //time = ltt_time_sub(time_span->end_time, time);
+ //time = ltt_time_sub(time_span.end_time, time);
//if(ltt_time_compare(time,time_window.time_width) < 0){
// time_window.time_width = time;
//}
tab->attributes = LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE, NULL));
tab->interrupted_state = g_object_new(LTTV_ATTRIBUTE_TYPE, NULL);
- tab->vbox = gtk_vbox_new(FALSE, 0);
- tab->viewer_container = gtk_vbox_new(TRUE, 0);
+ tab->vbox = gtk_vbox_new(FALSE, 2);
+ tab->viewer_container = gtk_vbox_new(TRUE, 2);
tab->scrollbar = gtk_hscrollbar_new(NULL);
//tab->multivpaned = gtk_multi_vpaned_new();