X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fcontrolflow%2Fprocesslist.h;h=f0c8fbdd3f6c07da7ec189145e958e3c3c7852bc;hb=e8d11122b46e7e2922e65825623c760f84a4d34f;hp=c1fccc3e8f9c2dd49440376ae624beb5f0abd12d;hpb=31b6868d56b0ea3311daa05301e53ac7e00ca218;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 c1fccc3e..f0c8fbdd 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h @@ -44,7 +44,7 @@ typedef struct _ProcessInfo { guint pid; - GQuark cpu; /* only for PID 0 */ + guint cpu; guint ppid; LttTime birth; guint trace_num; @@ -88,9 +88,8 @@ struct _ProcessList { guint number_of_process; gint cell_height_cache; - /* FIXME : those current process must be one per CPU !! */ - ProcessInfo *current_process_info; - HashedProcessData *current_hash_data; + /* Current process, one per cpu */ + HashedProcessData **current_hash_data; }; @@ -113,18 +112,58 @@ int processlist_add(ProcessList *process_list, guint pid, guint cpu, guint ppid, int processlist_remove(ProcessList *process_list, guint pid, guint cpu, LttTime *birth, guint trace_num); -__inline__ guint processlist_get_height(ProcessList *process_list); -// Returns 0 on success -__inline__ gint processlist_get_process_pixels(ProcessList *process_list, - guint pid, guint cpu, LttTime *birth, guint trace_num, - guint *y, guint *height, - HashedProcessData **hashed_process_data); +static inline guint processlist_get_height(ProcessList *process_list) +{ + return get_cell_height(process_list, + (GtkTreeView*)process_list->process_list_widget) + * process_list->number_of_process ; +} -__inline__ gint processlist_get_pixels_from_data( ProcessList *process_list, - ProcessInfo *process_info, + +static inline HashedProcessData *processlist_get_process_data( + ProcessList *process_list, + guint pid, guint cpu, LttTime *birth, guint trace_num) +{ + ProcessInfo process_info; + gint *path_indices; + GtkTreePath *tree_path; + + process_info.pid = pid; + if(pid == 0) + process_info.cpu = cpu; + else + process_info.cpu = 0; + process_info.birth = *birth; + process_info.trace_num = trace_num; + + return (HashedProcessData*)g_hash_table_lookup( + process_list->process_hash, + &process_info); +} + + +static inline gint processlist_get_pixels_from_data( ProcessList *process_list, HashedProcessData *hashed_process_data, guint *y, - guint *height); + guint *height) +{ + gint *path_indices; + GtkTreePath *tree_path; + + tree_path = gtk_tree_model_get_path((GtkTreeModel*)process_list->list_store, + &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); + *y = *height * path_indices[0]; + gtk_tree_path_free(tree_path); + + return 0; + +} + + #endif // _PROCESS_LIST_H