X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fcontrolflow%2Fprocesslist.h;h=c1fccc3e8f9c2dd49440376ae624beb5f0abd12d;hb=aac69e70dbe27a16d2aeb7b901828d462b3afac0;hp=75eda09ae1348a550f44ca7730941c0e2b44c803;hpb=ce0214a66f4e1c6f4d94d53c1ead65b58157c60d;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 75eda09a..c1fccc3e 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h @@ -44,14 +44,35 @@ typedef struct _ProcessInfo { guint pid; + GQuark cpu; /* only for PID 0 */ + 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; @@ -59,11 +80,18 @@ 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; + + /* FIXME : those current process must be one per CPU !! */ + ProcessInfo *current_process_info; + HashedProcessData *current_hash_data; + }; @@ -73,21 +101,27 @@ 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, - gchar *name, guint *height, HashedProcessData **hashed_process_data); +/* 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); +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, +__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); -gint processlist_get_pixels_from_data( ProcessList *process_list, +__inline__ gint processlist_get_pixels_from_data( ProcessList *process_list, ProcessInfo *process_info, HashedProcessData *hashed_process_data, guint *y,