LTTV_TRACESET_CONTEXT(tab->traceset_info->traceset_context);
TimeInterval time_span = tsc->time_span;
GtkAdjustment *adjustment = gtk_range_get_adjustment(GTK_RANGE(tab->scrollbar));
+ LttTime upper = ltt_time_sub(time_span.end_time, time_span.start_time);
g_object_set(G_OBJECT(adjustment),
"lower",
- ltt_time_to_double(time_span.start_time)
- * NANOSECONDS_PER_SECOND, /* lower */
+ 0.0, /* lower */
"upper",
- ltt_time_to_double(time_span.end_time)
+ ltt_time_to_double(upper)
* 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 */
{
LttvTraceset *traceset = tab->traceset_info->traceset;
guint i;
+ guint num_traces = lttv_traceset_number(traceset);
//Verify if trace is already present.
- for(i=0; i<lttv_traceset_number(traceset); i++)
+ for(i=0; i<num_traces; i++)
{
LttvTrace * trace = lttv_traceset_get(traceset, i);
if(trace == trace_v)
//
//
+ LttTime rel_time =
+ ltt_time_sub(new_time_window.start_time, time_span.start_time);
if( ltt_time_to_double(new_time_window.time_width)
* NANOSECONDS_PER_SECOND
/ SCROLL_STEP_PER_PAGE/* step increment */
+
- ltt_time_to_double(new_time_window.start_time)
- * NANOSECONDS_PER_SECOND /* page size */
+ ltt_time_to_double(rel_time) * NANOSECONDS_PER_SECOND /* page size */
==
- ltt_time_to_double(new_time_window.start_time)
- * NANOSECONDS_PER_SECOND /* page size */
+ ltt_time_to_double(rel_time) * NANOSECONDS_PER_SECOND /* page size */
) {
g_warning("Can not zoom that far due to scrollbar precision");
} else if(
//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.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);
GPtrArray *name;
guint nb,i;
gchar *module_name;
+ nb = lttv_library_module_number(library);
LttvModuleInfo *module_info = g_new(LttvModuleInfo,nb);
name = g_ptr_array_new();
- nb = lttv_library_module_number(library);
/* ask for the module name */
for(i=0;i<nb;i++){
if(module_name == NULL) return;
}
- lttv_module_release(module);
LttvModuleInfo module_info;
lttv_module_info(module, &module_info);
g_printf("Release module: %s\n", module_info.name);
+
+ lttv_module_release(module);
}
{
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);
- g_critical("lower %lu, upper %lu, value %lu, ratio %lu", lower, upper, value, ratio);
+ g_info("lower %lu, upper %lu, value %lu, ratio %lu", lower, upper, value, ratio);
//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;
//}
new_tab = create_tab(new_m_window, parent_tab, notebook, "Traceset");
} else {
new_tab = create_tab(new_m_window, NULL, notebook, "Traceset");
+ /* First window, use command line trace */
if(g_init_trace != NULL){
lttvwindow_add_trace(new_tab,
g_init_trace);
+
+ LttvTraceset *traceset = new_tab->traceset_info->traceset;
+ SetTraceset(new_tab, traceset);
}
}
tab->traceset_info->traceset = lttv_traceset_new();
}
-//FIXME : this is g_debug level
+#ifdef DEBUG
lttv_attribute_write_xml(
lttv_traceset_attribute(tab->traceset_info->traceset),
stdout,
0, 4);
fflush(stdout);
+#endif //DEBUG
//FIXME copy not implemented in lower level
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();