#include <lttv/iattribute.h>
#include <lttv/stats.h>
#include <lttv/filter.h>
+#include <lttv/sync/sync_chain_lttv.h>
#include <lttvwindow/mainwindow.h>
#include <lttvwindow/mainwindow-private.h>
#include <lttvwindow/menu.h>
void insert_viewer(GtkWidget* widget, lttvwindow_viewer_constructor constructor)
{
GtkWidget * viewer_container;
- MainWindow * mw_data = get_window_data_struct(widget);
GtkWidget * notebook = lookup_widget(widget, "MNotebook");
GtkWidget * viewer;
- TimeInterval * time_interval;
GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook),
gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)));
LttvPluginTab *ptab;
int SetTraceset(Tab * tab, LttvTraceset *traceset)
{
+ guint i;
+ TimeInterval time_span;
+ TimeWindow new_time_window;
+ LttTime new_current_time;
LttvTracesetContext *tsc =
- LTTV_TRACESET_CONTEXT(tab->traceset_info->traceset_context);
- TimeInterval time_span = tsc->time_span;
- TimeWindow new_time_window = tab->time_window;
- LttTime new_current_time = tab->current_time;
+ LTTV_TRACESET_CONTEXT(tab->traceset_info->traceset_context);
+
+ // Perform time synchronization on the traces
+ if (syncTraceset(tsc))
+ {
+ /* There is some time-dependant information that was calculated during
+ * context initialization. Destroy the old contexts and initialize new
+ * ones.
+ * Modified from lttvwindow_add_trace()
+ */
+ // Keep a reference to the traces so they are not freed
+ for(i = 0; i < lttv_traceset_number(traceset); i++)
+ {
+ LttvTrace *trace = lttv_traceset_get(traceset, i);
+ lttv_trace_ref(trace);
+ }
+
+ // Remove state update hooks
+ lttv_state_remove_event_hooks(
+ (LttvTracesetState*)tab->traceset_info->traceset_context);
+
+ lttv_context_fini(LTTV_TRACESET_CONTEXT(
+ tab->traceset_info->traceset_context));
+ g_object_unref(tab->traceset_info->traceset_context);
+
+ for(i = 0; i < lttv_traceset_number(traceset); i++)
+ {
+ LttvTrace *trace = lttv_traceset_get(traceset, i);
+ lttvwindowtraces_remove_trace(trace);
+ lttvwindowtraces_add_trace(trace);
+ }
+
+ // Create new context
+ tab->traceset_info->traceset_context =
+ g_object_new(LTTV_TRACESET_STATS_TYPE, NULL);
+ lttv_context_init(LTTV_TRACESET_CONTEXT(tab->traceset_info->
+ traceset_context), traceset);
+
+ // Add state update hooks
+ lttv_state_add_event_hooks(
+ (LttvTracesetState*)tab->traceset_info->traceset_context);
+
+ // Remove local reference to the traces
+ for(i=0; i<lttv_traceset_number(traceset); i++)
+ {
+ LttvTrace *trace = lttv_traceset_get(traceset, i);
+ lttv_trace_unref(trace);
+ }
+
+ tsc = LTTV_TRACESET_CONTEXT(tab->traceset_info->traceset_context);
+ }
+
+ time_span = tsc->time_span;
+ new_time_window = tab->time_window;
+ new_current_time = tab->current_time;
/* Set the tab's time window and current time if
* out of bounds */
LttvHooks * tmp;
LttvAttributeValue value;
gint retval = 0;
-
- g_assert( lttv_iattribute_find_by_path(tab->attributes,
- "hooks/updatetraceset", LTTV_POINTER, &value));
+ retval= lttv_iattribute_find_by_path(tab->attributes,
+ "hooks/updatetraceset", LTTV_POINTER, &value);
+ g_assert(retval);
tmp = (LttvHooks*)*(value.v_pointer);
- if(tmp == NULL) retval = 1;
- else lttv_hooks_call(tmp,traceset);
+ if(tmp == NULL)
+ retval = 1;
+ else
+ lttv_hooks_call(tmp,traceset);
time_change_manager(tab, new_time_window);
current_time_change_manager(tab, new_current_time);
{
LttvAttributeValue value;
LttvHooks * tmp;
- g_assert(lttv_iattribute_find_by_path(tab->attributes,
- "hooks/updatetraceset", LTTV_POINTER, &value));
+ gboolean retval;
+
+ retval= lttv_iattribute_find_by_path(tab->attributes,
+ "hooks/updatetraceset", LTTV_POINTER, &value);
+ g_assert(retval);
tmp = (LttvHooks*)*(value.v_pointer);
if(tmp == NULL) return;
lttv_hooks_call(tmp, NULL);
void move_down_viewer(GtkWidget * widget, gpointer user_data)
{
- MainWindow * mw = get_window_data_struct(widget);
GtkWidget * notebook = lookup_widget(widget, "MNotebook");
GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook),
void move_up_viewer(GtkWidget * widget, gpointer user_data)
{
- MainWindow * mw = get_window_data_struct(widget);
GtkWidget * notebook = lookup_widget(widget, "MNotebook");
GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook),
void delete_viewer(GtkWidget * widget, gpointer user_data)
{
- MainWindow * mw = get_window_data_struct(widget);
GtkWidget * notebook = lookup_widget(widget, "MNotebook");
GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook),
gboolean lttvwindow_process_pending_requests(Tab *tab)
{
- GtkWidget* widget;
LttvTracesetContext *tsc;
LttvTracefileContext *tfc;
GSList *list_in = NULL;
tab = ptab->tab;
}
- //GtkDirSelection * file_selector = (GtkDirSelection *)gtk_dir_selection_new("Select a trace");
- GtkFileSelection * file_selector = (GtkFileSelection *)gtk_file_selection_new("Select a trace");
- gtk_widget_hide( (file_selector)->file_list->parent) ;
- gtk_file_selection_hide_fileop_buttons(file_selector);
- gtk_window_set_transient_for(GTK_WINDOW(file_selector),
- GTK_WINDOW(mw_data->mwindow));
-
+ /* File open dialog management */
+ GtkFileChooser * file_chooser =
+ GTK_FILE_CHOOSER(
+ gtk_file_chooser_dialog_new ("Select a trace",
+ GTK_WINDOW(mw_data->mwindow),
+ GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL));
+
+ gtk_file_chooser_set_show_hidden (file_chooser, TRUE);
if(remember_trace_dir[0] != '\0')
- gtk_file_selection_set_filename(file_selector, remember_trace_dir);
-
- id = gtk_dialog_run(GTK_DIALOG(file_selector));
+ gtk_file_chooser_set_filename(file_chooser, remember_trace_dir);
+
+ id = gtk_dialog_run(GTK_DIALOG(file_chooser));
+
switch(id){
case GTK_RESPONSE_ACCEPT:
case GTK_RESPONSE_OK:
- dir = gtk_file_selection_get_filename (file_selector);
+ dir = gtk_file_chooser_get_filename (file_chooser);
strncpy(remember_trace_dir, dir, PATH_MAX);
strncat(remember_trace_dir, "/", PATH_MAX);
if(!dir || strlen(dir) == 0){
- gtk_widget_destroy((GtkWidget*)file_selector);
break;
}
get_absolute_pathname(dir, abs_path);
lttvwindow_add_trace(tab, trace_v);
}
- gtk_widget_destroy((GtkWidget*)file_selector);
//update current tab
//update_traceset(mw_data);
case GTK_RESPONSE_REJECT:
case GTK_RESPONSE_CANCEL:
default:
- gtk_widget_destroy((GtkWidget*)file_selector);
- break;
+ break;
}
+ gtk_widget_destroy((GtkWidget*)file_chooser);
+
}
/* remove_trace removes a trace from the current traceset if all viewers in
for(i = 0; i < nb_trace; i++){
trace_v = lttv_traceset_get(tab->traceset_info->traceset, i);
trace = lttv_trace(trace_v);
- name[i] = g_quark_to_string(ltt_trace_name(trace));
+ name[i] = (char *) g_quark_to_string(ltt_trace_name(trace));
}
remove_trace_name = get_remove_trace(mw_data, name, nb_trace);
GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook),
gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)));
Tab *tab;
+ gboolean retval;
+
if(!page) {
return;
} else {
LttvHooks * tmp;
LttvAttributeValue value;
- g_assert(lttv_iattribute_find_by_path(tab->attributes, "hooks/redraw", LTTV_POINTER, &value));
+ retval= lttv_iattribute_find_by_path(tab->attributes, "hooks/redraw", LTTV_POINTER, &value);
+ g_assert(retval);
tmp = (LttvHooks*)*(value.v_pointer);
if(tmp != NULL)
GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook),
gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)));
Tab *tab;
+ gboolean retval;
+
if(!page) {
return;
} else {
LttvHooks * tmp;
LttvAttributeValue value;
- g_assert(lttv_iattribute_find_by_path(tab->attributes,
- "hooks/continue", LTTV_POINTER, &value));
+ retval= lttv_iattribute_find_by_path(tab->attributes, "hooks/continue",
+ LTTV_POINTER, &value);
+ g_assert(retval);
tmp = (LttvHooks*)*(value.v_pointer);
if(tmp != NULL)
TimeInterval time_span;
TimeWindow new_time_window;
LttTime current_time, time_delta;
- MainWindow * mw_data = get_window_data_struct(widget);
LttvTracesetContext *tsc;
GtkWidget * notebook = lookup_widget(widget, "MNotebook");
{
gint page_num;
GtkWidget * notebook;
- GtkWidget * page;
- MainWindow * mw_data = get_window_data_struct(widget);
notebook = lookup_widget(widget, "MNotebook");
if(notebook == NULL){
g_info("Notebook does not exist\n");
on_unload_module_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
- GError *error = NULL;
MainWindow * mw_data = get_window_data_struct((GtkWidget*)menuitem);
LttvLibrary *library = NULL;
{
GPtrArray *name;
guint nb,i;
- gchar *lib_name;
name = g_ptr_array_new();
nb = lttv_library_path_number();
/* ask for the library name */
MainWindow *main_window = get_window_data_struct(widget);
LttvIAttribute *attributes = main_window->attributes;
LttvAttributeValue value;
+ gboolean retval;
//This is unnecessary, since widgets will be destroyed
//by the main window widget anyway.
//remove_all_menu_toolbar_constructors(main_window, NULL);
- g_assert(lttv_iattribute_find_by_path(attributes,
- "viewers/menu", LTTV_POINTER, &value));
+ retval= lttv_iattribute_find_by_path(attributes, "viewers/menu",
+ LTTV_POINTER, &value);
+ g_assert(retval);
lttv_menus_destroy((LttvMenus*)*(value.v_pointer));
- g_assert(lttv_iattribute_find_by_path(attributes,
- "viewers/toolbar", LTTV_POINTER, &value));
+ retval= lttv_iattribute_find_by_path(attributes, "viewers/toolbar",
+ LTTV_POINTER, &value);
+ g_assert(retval);
lttv_toolbars_destroy((LttvToolbars*)*(value.v_pointer));
g_object_unref(main_window->attributes);
GdkEventConfigure *event,
gpointer user_data)
{
- MainWindow * mw_data = get_window_data_struct((GtkWidget*)widget);
-
// MD : removed time width modification upon resizing of the main window.
// The viewers will redraw themselves completely, without time interval
// modification.
{
LttvTracesetContext *tsc =
LTTV_TRACESET_CONTEXT(tab->traceset_info->traceset_context);
- TimeInterval time_span = tsc->time_span;
+ int retval;
- g_assert(lttv_process_traceset_seek_position(tsc, pos) == 0);
+ retval= lttv_process_traceset_seek_position(tsc, pos);
+ g_assert_cmpint(retval, ==, 0);
LttTime new_time = lttv_traceset_context_position_get_time(pos);
/* Put the context in a state coherent position */
lttv_state_traceset_seek_time_closest((LttvTracesetState*)tsc, ltt_time_zero);
LttvIAttribute *global_attributes = LTTV_IATTRIBUTE(lttv_global_attributes());
LttvIAttribute *attributes = mw->attributes;
GtkWidget * tool_menu_title_menu, *new_widget, *pixmap;
+ gboolean retval;
- g_assert(lttv_iattribute_find_by_path(global_attributes,
- "viewers/menu", LTTV_POINTER, &value));
+ retval= lttv_iattribute_find_by_path(global_attributes, "viewers/menu",
+ LTTV_POINTER, &value);
+ g_assert(retval);
if(*(value.v_pointer) == NULL)
*(value.v_pointer) = lttv_menus_new();
global_menu = (LttvMenus*)*(value.v_pointer);
- g_assert(lttv_iattribute_find_by_path(attributes,
- "viewers/menu", LTTV_POINTER, &value));
+ retval= lttv_iattribute_find_by_path(attributes, "viewers/menu",
+ LTTV_POINTER, &value);
+ g_assert(retval);
if(*(value.v_pointer) == NULL)
*(value.v_pointer) = lttv_menus_new();
instance_menu = (LttvMenus*)*(value.v_pointer);
-
-
- g_assert(lttv_iattribute_find_by_path(global_attributes,
- "viewers/toolbar", LTTV_POINTER, &value));
+ retval= lttv_iattribute_find_by_path(global_attributes, "viewers/toolbar",
+ LTTV_POINTER, &value);
+ g_assert(retval);
if(*(value.v_pointer) == NULL)
*(value.v_pointer) = lttv_toolbars_new();
global_toolbar = (LttvToolbars*)*(value.v_pointer);
- g_assert(lttv_iattribute_find_by_path(attributes,
- "viewers/toolbar", LTTV_POINTER, &value));
+ retval= lttv_iattribute_find_by_path(attributes, "viewers/toolbar",
+ LTTV_POINTER, &value);
+ g_assert(retval);
if(*(value.v_pointer) == NULL)
*(value.v_pointer) = lttv_toolbars_new();
instance_toolbar = (LttvToolbars*)*(value.v_pointer);
MainWindow *construct_main_window(MainWindow * parent)
{
+ gboolean retval;
+
g_debug("construct_main_window()");
GtkWidget * new_window; /* New generated main window */
MainWindow * new_m_window;/* New main window structure */
new_m_window->mwindow = new_window;
new_m_window->attributes = attributes;
- g_assert(lttv_iattribute_find_by_path(attributes,
- "viewers/menu", LTTV_POINTER, &value));
+ retval= lttv_iattribute_find_by_path(attributes, "viewers/menu",
+ LTTV_POINTER, &value);
+ g_assert(retval);
*(value.v_pointer) = lttv_menus_new();
- g_assert(lttv_iattribute_find_by_path(attributes,
- "viewers/toolbar", LTTV_POINTER, &value));
+ retval= lttv_iattribute_find_by_path(attributes, "viewers/toolbar",
+ LTTV_POINTER, &value);
+ g_assert(retval);
*(value.v_pointer) = lttv_toolbars_new();
add_all_menu_toolbar_constructors(new_m_window, NULL);