#include "callbacks.h"
#include "interface.h"
#include "support.h"
-#include <ltt/trace.h>
-#include <ltt/time.h>
-#include <ltt/event.h>
+#include <lttv/time.h>
#include <lttv/lttv.h>
#include <lttv/module.h>
#include <lttv/iattribute.h>
}
#endif /*BABEL_CLEANUP*/
- time_span = lttv_traceset_get_time_span(traceset);
+ time_span = lttv_traceset_get_time_span_real(traceset);
tab->traceset_info->traceset = traceset;
events_request->before_chunk_traceset = NULL;
events_request->before_chunk_trace = NULL;
events_request->before_chunk_tracefile = NULL;
- events_request->event = traceset->event_hooks;
+ events_request->event = NULL;
events_request->after_chunk_tracefile = NULL;
events_request->after_chunk_trace = NULL;
events_request->after_chunk_traceset = NULL;
/* Process the traceset with only state hooks */
#ifdef DEBUG
seek_count =
-
+#endif
lttv_process_traceset_middle(ts,
ltt_time_infinite,
G_MAXUINT,
events_request->start_position);
-#endif
+
//g_assert(lttv_traceset_context_ctx_pos_compare(tsc,
// events_request->start_position) == 0);
/* 1.3 Add hooks and call before request for all list_in members */
{
GSList *iter = NULL;
-
for(iter=list_in;iter!=NULL;iter=g_slist_next(iter)) {
EventsRequest *events_request = (EventsRequest*)iter->data;
/* 1.3.1 If !servicing */
*/
//TODO ybrosseau 2012-07-10: || TRUE added since we only support
// traceset wide requests
- if(events_request->trace == -1 || TRUE)
+ if(events_request->trace == -1 || TRUE) {
+
lttv_process_traceset_begin(ts,
events_request->before_chunk_traceset,
events_request->before_chunk_trace,
events_request->event
);
- else {
+ } else {
guint nb_trace = lttv_traceset_number(ts);
g_assert((guint)events_request->trace < nb_trace &&
events_request->trace > -1);
lttv_hooks_call(events_request->before_chunk_traceset, ts);
- lttv_trace_add_hooks(trace,
- events_request->before_chunk_trace,
-
- events_request->event
- );
+ lttv_trace_add_hooks(trace, events_request->before_chunk_trace,
+ events_request->event);
}
}
}
lttv_trace_add_hooks(trace,
events_request->before_chunk_trace,
-
events_request->event
);
}
*/
//TODO ybrosseau 2012-07-10: || TRUE added since we only support
// traceset wide requests
- if(events_request->trace == -1 || TRUE)
+ if(events_request->trace == -1 || TRUE) {
lttv_process_traceset_end(ts,
events_request->after_chunk_traceset,
events_request->after_chunk_trace,
-
events_request->event);
-
-
- else {
+ } else {
guint nb_trace = lttv_traceset_number(ts);
g_assert(events_request->trace < nb_trace &&
events_request->trace > -1);
ptab = (LttvPluginTab *)g_object_get_data(G_OBJECT(page), "Tab_Plugin");
tab = ptab->tab;
}
-//TODO fdeslauriers 2012-07-06: Remove this popup when we support multiple traces
- traceset = lttvwindow_get_traceset(tab);
- if(traceset != NULL && lttv_traceset_number(traceset) > 0){
- 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,
- "Loading multiple traces is not supported at the moment.");
- gtk_dialog_run(GTK_DIALOG(dialogue));
- gtk_widget_destroy(dialogue);
- return;
- }
-
+
/* Create a new traceset*/
- traceset = lttv_traceset_new();
+ traceset = tab->traceset_info->traceset;
+ if(traceset == NULL) {
+ traceset = lttv_traceset_new();
+ }
/* File open dialog management */
#ifdef BABEL_CLEANUP
GtkWidget *extra_live_button;
void zoom(GtkWidget * widget, double size)
{
-#ifdef BABEL_CLEANUP
+
TimeInterval time_span;
TimeWindow new_time_window;
LttTime current_time, time_delta;
- LttvTracesetContext *tsc;
+ LttvTraceset *ts;
GtkWidget * notebook = lookup_widget(widget, "MNotebook");
GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook),
if(size == 1) return;
- tsc = LTTV_TRACESET_CONTEXT(tab->traceset_info->traceset_context);
- time_span = tsc->time_span;
+ ts = lttvwindow_get_traceset(tab);
+ time_span = lttv_traceset_get_time_span_real(ts);
new_time_window = tab->time_window;
current_time = tab->current_time;
} else {
time_change_manager(tab, new_time_window);
}
-
-#endif /* BABEL_CLEANUP */
}
void zoom_in(GtkWidget * widget, gpointer user_data)
gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)));
Tab *copy_tab;
- if(!page) {
+ if(!page || TRUE ) {
copy_tab = NULL;
} else {
LttvPluginTab *ptab;
}
-static void
-on_about_close_activate (GtkButton *button,
- gpointer user_data)
-{
- GtkWidget *about_widget = GTK_WIDGET(user_data);
-
- gtk_widget_destroy(about_widget);
-}
-
void
on_about_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
MainWindow *main_window = get_window_data_struct(GTK_WIDGET(menuitem));
- GtkWidget *window_widget = main_window->mwindow;
- GtkWidget *about_widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- GtkWindow *about_window = GTK_WINDOW(about_widget);
-
- gtk_window_set_title(about_window, "About Linux Trace Toolkit");
-
- gtk_window_set_resizable(about_window, FALSE);
- gtk_window_set_transient_for(about_window, GTK_WINDOW(window_widget));
- gtk_window_set_destroy_with_parent(about_window, TRUE);
- gtk_window_set_modal(about_window, FALSE);
- /* Put the about window at the center of the screen */
- gtk_window_set_position(about_window, GTK_WIN_POS_CENTER_ALWAYS);
-
- GtkWidget *vbox = gtk_vbox_new(FALSE, 1);
-
- gtk_container_add(GTK_CONTAINER(about_widget), vbox);
-
- /* Text to show */
- GtkWidget *label1 = gtk_label_new("");
- gtk_misc_set_padding(GTK_MISC(label1), 10, 20);
- gtk_label_set_markup(GTK_LABEL(label1), "\
-<big>Linux Trace Toolkit " VERSION "</big>");
- gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_CENTER);
+ gchar * authors[] = { "Yannick Brosseau",
+ "Francis Deslauriers",
+ "Mathieu Desnoyer",
+ "Michel Dagenais",
+ "Benoit Des Ligneris",
+ "Eric Clement",
+ "Xang-Xiu Yang",
+ "Tom Zanussi",
+ NULL };
+
+ static const gchar *comments = "Trace visualiser for LTTng 2.x data\
+\nInspired from the original Linux Trace Toolkit Visualizer made by Karim Yaghmour";
- GtkWidget *label2 = gtk_label_new("");
- gtk_misc_set_padding(GTK_MISC(label2), 10, 20);
- gtk_label_set_markup(GTK_LABEL(label2), "\
-Contributors :\n\
-\n\
-Michel Dagenais (New trace format, lttv main)\n\
-Mathieu Desnoyers (Kernel Tracer, Directory structure, build with automake/conf,\n\
- lttv gui, control flow view, gui cooperative trace reading\n\
- scheduler with interruptible foreground and background\n\
- computation, detailed event list (rewrite), trace reading\n\
- library (rewrite))\n\
-Benoit Des Ligneris, Eric Clement (Cluster adaptation, work in progress)\n\
-Xang-Xiu Yang (new trace reading library and converter, lttv gui, \n\
- detailed event list and statistics view)\n\
-Tom Zanussi (RelayFS)\n\
-\n\
-Inspired from the original Linux Trace Toolkit Visualizer made by\n\
-Karim Yaghmour");
-
- GtkWidget *label3 = gtk_label_new("");
- gtk_label_set_markup(GTK_LABEL(label3), "\
-Linux Trace Toolkit Viewer, Copyright (C) 2004, 2005, 2006\n\
- Michel Dagenais\n\
- Mathieu Desnoyers\n\
- Xang-Xiu Yang\n\
-Linux Trace Toolkit comes with ABSOLUTELY NO WARRANTY.\n\
-This is free software, and you are welcome to redistribute it\n\
-under certain conditions. See COPYING for details.");
- gtk_misc_set_padding(GTK_MISC(label3), 10, 20);
-
- gtk_box_pack_start_defaults(GTK_BOX(vbox), label1);
- gtk_box_pack_start_defaults(GTK_BOX(vbox), label2);
- gtk_box_pack_start_defaults(GTK_BOX(vbox), label3);
-
- GtkWidget *hbox = gtk_hbox_new(TRUE, 0);
- gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- GtkWidget *close_button = gtk_button_new_with_mnemonic("_Close");
- gtk_box_pack_end(GTK_BOX(hbox), close_button, FALSE, FALSE, 0);
- gtk_container_set_border_width(GTK_CONTAINER(close_button), 20);
-
- g_signal_connect(G_OBJECT(close_button), "clicked",
- G_CALLBACK(on_about_close_activate),
- (gpointer)about_widget);
-
- gtk_widget_show_all(about_widget);
+ static const gchar *copyright = "Copyright \xc2\xa9 2004-2013";
+
+ gtk_show_about_dialog(main_window->mwindow,
+ "authors", authors,
+ "comments", comments,
+ "version", VERSION,
+ "program-name", "LTTV",
+ "license", "GPLv2, see COPYING file for details",
+ "website", "http://lttng.org/lttv/",
+ "copyright", copyright,
+ NULL);
}
on_button_new_clicked (GtkButton *button,
gpointer user_data)
{
+#ifdef BABEL_CLEANUP
create_new_window((GtkWidget*)button, user_data, TRUE);
+#else
+ GtkWidget *dialogue =
+ gtk_message_dialog_new(
+ GTK_WINDOW(gtk_widget_get_toplevel(button)),
+ GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ "Opening multiple windows is disabled.");
+ gtk_dialog_run(GTK_DIALOG(dialogue));
+ gtk_widget_destroy(dialogue);
+#endif
}
void
TimeInterval time_span;
LttvTraceset *ts = tab->traceset_info->traceset;
- time_span.start_time =ltt_time_from_uint64( lttv_traceset_get_timestamp_begin(ts));
- time_span.end_time = ltt_time_from_uint64(lttv_traceset_get_timestamp_end(ts));
+ time_span = lttv_traceset_get_time_span_real(ts);
LttTime start_time = new_time_window.start_time;
LttTime end_time = new_time_window.end_time;
{
Tab *tab = (Tab *)user_data;
LttvTraceset * ts =tab->traceset_info->traceset;
- TimeInterval time_span = lttv_traceset_get_time_span(ts);
+ TimeInterval time_span = lttv_traceset_get_time_span_real(ts);
TimeWindow new_time_window = tab->time_window;
new_time_window.start_time = timebar_get_start_time(timebar);
{
Tab *tab = (Tab *)user_data;
LttvTraceset * ts =tab->traceset_info->traceset;
- TimeInterval time_span = lttv_traceset_get_time_span(ts);
+ TimeInterval time_span = lttv_traceset_get_time_span_real(ts);
TimeWindow new_time_window = tab->time_window;
gdouble page_size;
LttvTraceset * ts = tab->traceset_info->traceset;
- TimeInterval time_span = lttv_traceset_get_time_span(ts);
+ TimeInterval time_span = lttv_traceset_get_time_span_real(ts);
time = ltt_time_add(ltt_time_from_double(value),
time_span.start_time);