X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fcontrolflow%2Fprocesslist.h;h=d94846030ea798d57aece063eb7cec4d5dc237b7;hb=ec7a5af61127aa50a1839eee5be99ce53494c57b;hp=687ac407e7e58c2d111e679854161aa91bdb9d51;hpb=7c0125e0d749f61688a140b2dbb76cc37ad57beb;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h index 687ac407..d9484603 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h @@ -22,6 +22,7 @@ #define _PROCESS_LIST_H #include +#include #include #include @@ -45,7 +46,9 @@ enum { PROCESS_COLUMN, + BRAND_COLUMN, PID_COLUMN, + TGID_COLUMN, PPID_COLUMN, CPU_COLUMN, BIRTH_S_COLUMN, @@ -58,6 +61,7 @@ enum typedef struct _ProcessInfo { guint pid; + guint tgid; guint cpu; guint ppid; LttTime birth; @@ -88,7 +92,6 @@ typedef struct _HashedProcessData { LttTime next_good_time; /* precalculate the next time where the next pixel is.*/ - // FIXME : add info on last event ? } HashedProcessData; @@ -105,8 +108,8 @@ struct _ProcessList { guint number_of_process; gint cell_height; - /* Current process, one per cpu */ - HashedProcessData **current_hash_data; + /* Current process pointer, one per cpu, one per trace */ + HashedProcessData ***current_hash_data; /* Array containing index -> pixmap correspondance. Must be updated * every time the process list is reordered, process added or removed */ @@ -132,14 +135,31 @@ void processlist_clear(ProcessList *process_list); // out : success (0) and height /* CPU num is only used for PID 0 */ int processlist_add(ProcessList *process_list, Drawing_t * drawing, - guint pid, guint cpu, guint ppid, - LttTime *birth, guint trace_num, const gchar *name, guint *height, + guint pid, guint tgid, guint cpu, guint ppid, + LttTime *birth, guint trace_num, GQuark name, GQuark brand, guint *height, ProcessInfo **process_info, HashedProcessData **hashed_process_data); // out : success (0) and height int processlist_remove(ProcessList *process_list, guint pid, guint cpu, LttTime *birth, guint trace_num); +/* Set the name of a process */ +void processlist_set_name(ProcessList *process_list, + GQuark name, + HashedProcessData *hashed_process_data); + +void processlist_set_brand(ProcessList *process_list, + GQuark brand, + HashedProcessData *hashed_process_data); + +/* Set the ppid of a process */ +void processlist_set_tgid(ProcessList *process_list, + guint tgid, + HashedProcessData *hashed_process_data); +void processlist_set_ppid(ProcessList *process_list, + guint ppid, + HashedProcessData *hashed_process_data); + /* Synchronize the list at the left and the drawing */ void update_index_to_pixmap(ProcessList *process_list); @@ -166,7 +186,21 @@ void copy_pixmap_to_screen(ProcessList *process_list, gint width, gint height); +static inline gint get_cell_height(GtkTreeView *TreeView) +{ + gint height; + GtkTreeViewColumn *column = gtk_tree_view_get_column(TreeView, 0); + + gtk_tree_view_column_cell_get_size(column, NULL, NULL, NULL, NULL, &height); + + gint vertical_separator; + gtk_widget_style_get (GTK_WIDGET (TreeView), + "vertical-separator", &vertical_separator, + NULL); + height += vertical_separator; + return height; +} static inline guint processlist_get_height(ProcessList *process_list) { @@ -184,7 +218,7 @@ static inline HashedProcessData *processlist_get_process_data( if(pid == 0) process_info.cpu = cpu; else - process_info.cpu = 0; + process_info.cpu = ANY_CPU; process_info.birth = *birth; process_info.trace_num = trace_num; @@ -206,8 +240,7 @@ static inline gint processlist_get_pixels_from_data( ProcessList *process_list, &hashed_process_data->y_iter); path_indices = gtk_tree_path_get_indices (tree_path); - *height = get_cell_height(process_list, - (GtkTreeView*)process_list->process_list_widget); + *height = get_cell_height((GtkTreeView*)process_list->process_list_widget); *y = *height * path_indices[0]; gtk_tree_path_free(tree_path);