X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fcontrolflow%2Fprocesslist.h;h=1a4f743e5a80bf60c4285f948166d867d0c972d3;hb=6550d71135aed5d81a76d7d5625757570bcf0819;hp=a0a2e7fc364c71c0ad8bee40d5bbda1fc1393aa7;hpb=e72908ed8d4eeefde92f303b49d375b58476833a;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 a0a2e7fc..1a4f743e 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h @@ -44,12 +44,12 @@ typedef struct _ProcessInfo { guint pid; - GQuark cpu; /* only for PID 0 */ + guint cpu; guint ppid; LttTime birth; guint trace_num; - gint height_cache; + // gint height_cache; } ProcessInfo; @@ -70,6 +70,8 @@ typedef struct _HashedProcessData { gboolean under_marked; /* inform the user that information is incomplete */ } x; /* last x position saved by after state update */ + LttTime next_good_time; /* precalculate the next time where the next + pixel is.*/ // FIXME : add info on last event ? } HashedProcessData; @@ -85,6 +87,10 @@ struct _ProcessList { guint number_of_process; gint cell_height_cache; + + /* Current process, one per cpu */ + HashedProcessData **current_hash_data; + }; @@ -100,23 +106,64 @@ void processlist_clear(ProcessList *process_list); /* CPU num is only used for PID 0 */ int processlist_add(ProcessList *process_list, guint pid, guint cpu, guint ppid, LttTime *birth, guint trace_num, const gchar *name, 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); -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); +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 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); +} + -__inline gint processlist_get_pixels_from_data( ProcessList *process_list, - ProcessInfo *process_info, +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