X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fcontrolflow%2Fprocesslist.h;h=437110a16c3f5b7d6449540755149a51da0bac70;hb=ac4e21cf65c238b9d1166860707a05b447a4bc45;hp=20d39b9b8637a2d5701801942ea11828e9dfec9e;hpb=d0cd7f0949c2fd90d5a39361b192c9b2d96bf5d4;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 20d39b9b..437110a1 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h @@ -44,15 +44,35 @@ typedef struct _ProcessInfo { guint pid; + guint cpu; + guint ppid; LttTime birth; guint trace_num; + // gint height_cache; + } ProcessInfo; typedef struct _HashedProcessData { - GtkTreeRowReference *row_ref; - DrawContext *draw_context; + GtkTreeIter y_iter; // Access quickly to y pos. + // DrawContext *draw_context; + /* Information on current drawing */ + struct { + guint over; + gboolean over_used; /* inform the user that information is incomplete */ + gboolean over_marked; /* inform the user that information is incomplete */ + guint middle; + gboolean middle_used; /* inform the user that information is incomplete */ + gboolean middle_marked;/* inform the user that information is incomplete */ + guint under; + gboolean under_used; /* inform the user that information is incomplete */ + 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; @@ -60,11 +80,17 @@ struct _ProcessList { GtkWidget *process_list_widget; GtkListStore *list_store; + GtkWidget *button; /* one button of the tree view */ /* A hash table by PID to speed up process position find in the list */ GHashTable *process_hash; guint number_of_process; + gint cell_height_cache; + + /* Current process, one per cpu */ + HashedProcessData **current_hash_data; + }; @@ -74,24 +100,25 @@ ProcessList *processlist_construct(void); void processlist_destroy(ProcessList *process_list); GtkWidget *processlist_get_widget(ProcessList *process_list); +void processlist_clear(ProcessList *process_list); + // out : success (0) and height -int processlist_add(ProcessList *process_list, guint pid, LttTime *birth, - guint trace_num, gchar *name, guint *height, +/* 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, LttTime *birth, - guint trace_num); +int processlist_remove(ProcessList *process_list, guint pid, guint cpu, + LttTime *birth, guint trace_num); -guint processlist_get_height(ProcessList *process_list); +__inline__ guint processlist_get_height(ProcessList *process_list); -// Returns 0 on success -gint processlist_get_process_pixels(ProcessList *process_list, - guint pid, LttTime *birth, guint trace_num, - guint *y, guint *height, - HashedProcessData **hashed_process_data); +__inline__ HashedProcessData *processlist_get_process_data( + ProcessList *process_list, + guint pid, guint cpu, LttTime *birth, guint trace_num); -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);