X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Flttvwindow%2Flttvwindow%2Fcallbacks.c;h=d313a006f6a0eda33b9650517eddb80a12cbdd7f;hb=0246f776f486b83386d0782d86202f1d2d667346;hp=bb8932373df05c6c500563c3011a38cabcd3b0e6;hpb=e433e6d6da2cc572a3d14257abe18bc3afd5c7e6;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/callbacks.c b/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/callbacks.c index bb893237..d313a006 100644 --- a/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/callbacks.c +++ b/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/callbacks.c @@ -928,6 +928,8 @@ gboolean lttvwindow_process_pending_requests(Tab *tab) guint count; LttvTracesetContextPosition *end_position; + if(lttvwindow_preempt_count > 0) return TRUE; + if(tab == NULL) { g_critical("Foreground processing : tab does not exist. Processing removed."); return FALSE; @@ -2168,6 +2170,7 @@ void stop_processing(GtkWidget *widget, gpointer user_data) g_slist_remove_link(tab->events_requests, remove_iter); } tab->events_request_pending = FALSE; + tab->stop_foreground = TRUE; g_idle_remove_by_data(tab); g_assert(g_slist_length(tab->events_requests) == 0); } @@ -4771,6 +4774,8 @@ void init_tab(Tab *tab, MainWindow * mw, Tab *copy_tab, /* Start with empty events requests list */ tab->events_requests = NULL; tab->events_request_pending = FALSE; + tab->stop_foreground = FALSE; + g_signal_connect(G_OBJECT(tab->scrollbar), "value-changed", @@ -4847,9 +4852,9 @@ gboolean execute_events_requests(Tab *tab) } -void create_main_window_with_trace(const gchar *path) +void create_main_window_with_trace_list(GSList *traces) { - if(path == NULL) return; + GSList *iter = NULL; /* Create window */ MainWindow *mw = construct_main_window(NULL); @@ -4869,37 +4874,40 @@ void create_main_window_with_trace(const gchar *path) tab = ptab->tab; } - /* Add trace */ - gchar abs_path[PATH_MAX]; - LttvTrace *trace_v; - LttTrace *trace; - - get_absolute_pathname(path, abs_path); - trace_v = lttvwindowtraces_get_trace_by_name(abs_path); - if(trace_v == NULL) { - trace = ltt_trace_open(abs_path); - if(trace == NULL) { - g_warning("cannot open trace %s", abs_path); - - GtkWidget *dialogue = - gtk_message_dialog_new( - GTK_WINDOW(gtk_widget_get_toplevel(widget)), - GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - "Cannot open trace : maybe you should enter in the directory" - "to select it ?"); - gtk_dialog_run(GTK_DIALOG(dialogue)); - gtk_widget_destroy(dialogue); + for(iter=traces; iter!=NULL; iter=g_slist_next(iter)) { + gchar *path = (gchar*)iter->data; + /* Add trace */ + gchar abs_path[PATH_MAX]; + LttvTrace *trace_v; + LttTrace *trace; + + get_absolute_pathname(path, abs_path); + trace_v = lttvwindowtraces_get_trace_by_name(abs_path); + if(trace_v == NULL) { + trace = ltt_trace_open(abs_path); + if(trace == NULL) { + g_warning("cannot open trace %s", abs_path); + + GtkWidget *dialogue = + gtk_message_dialog_new( + GTK_WINDOW(gtk_widget_get_toplevel(widget)), + GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + "Cannot open trace : maybe you should enter in the directory " + "to select it ?"); + gtk_dialog_run(GTK_DIALOG(dialogue)); + gtk_widget_destroy(dialogue); + } else { + trace_v = lttv_trace_new(trace); + lttvwindowtraces_add_trace(trace_v); + lttvwindow_add_trace(tab, trace_v); + } } else { - trace_v = lttv_trace_new(trace); - lttvwindowtraces_add_trace(trace_v); lttvwindow_add_trace(tab, trace_v); } - } else { - lttvwindow_add_trace(tab, trace_v); } - + LttvTraceset *traceset; traceset = tab->traceset_info->traceset;