X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fcontrolflow%2Fprocesslist.c;h=103063ab8fdd00187b18975695d0d869d3edb72c;hb=3f7f592ef1627e7a51ab90734670405e19fa92bd;hp=6629babc0f8f5a3dba19463635af1571acf904c8;hpb=117986b7c3995d516dc429449ed6a536d57c1076;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.c b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.c index 6629babc..103063ab 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.c @@ -16,6 +16,10 @@ * MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include @@ -36,21 +40,6 @@ * Methods to synchronize process list * *****************************************************************************/ -//static inline guint get_cpu_number_from_name(GQuark name); - -/* Enumeration of the columns */ -enum -{ - PROCESS_COLUMN, - PID_COLUMN, - PPID_COLUMN, - CPU_COLUMN, - BIRTH_S_COLUMN, - BIRTH_NS_COLUMN, - TRACE_COLUMN, - N_COLUMNS -}; - gint process_sort_func ( GtkTreeModel *model, GtkTreeIter *it_a, @@ -94,27 +83,27 @@ gint process_sort_func ( GtkTreeModel *model, if(a_pid == 0 && b_pid == 0) { /* If 0, order by CPU */ if(a_cpu > b_cpu) return 1; - if(a_cpu < b_cpu) return 0; + if(a_cpu < b_cpu) return -1; } else { /* if not 0, order by pid */ if(a_pid > b_pid) return 1; - if(a_pid < b_pid) return 0; + if(a_pid < b_pid) return -1; } /* Order by birth second */ if(a_birth_s > b_birth_s) return 1; - if(a_birth_s < b_birth_s) return 0; + if(a_birth_s < b_birth_s) return -1; /* Order by birth nanosecond */ if(a_birth_ns > b_birth_ns) return 1; - if(a_birth_ns < b_birth_ns) return 0; + if(a_birth_ns < b_birth_ns) return -1; /* Order by trace_num */ if(a_trace > b_trace) return 1; - if(a_trace < b_trace) return 0; + if(a_trace < b_trace) return -1; return 0; @@ -136,11 +125,11 @@ static gboolean process_list_equ_fct(gconstpointer a, gconstpointer b) if(likely(pa->pid != pb->pid)) ret = FALSE; - else if(likely((pa->pid == 0 && (pa->cpu != pb->cpu)))) + if(likely((pa->pid == 0 && (pa->cpu != pb->cpu)))) ret = FALSE; - else if(unlikely(ltt_time_compare(pa->birth, pb->birth) != 0)) + if(unlikely(ltt_time_compare(pa->birth, pb->birth) != 0)) ret = FALSE; - else if(unlikely(pa->trace_num != pb->trace_num)) + if(unlikely(pa->trace_num != pb->trace_num)) ret = FALSE; return ret; @@ -166,7 +155,7 @@ static void update_index_to_pixmap_each(ProcessInfo *key, } -static void update_index_to_pixmap(ProcessList *process_list) +void update_index_to_pixmap(ProcessList *process_list) { g_ptr_array_set_size(process_list->index_to_pixmap, g_hash_table_size(process_list->process_hash)); @@ -288,7 +277,6 @@ void copy_pixmap_to_screen(ProcessList *process_list, if(process_list->index_to_pixmap->len == 0) return; guint cell_height = process_list->cell_height; - //cell_height = 24; //FIXME /* Get indexes */ gint begin = floor(y/(double)cell_height); gint end = MIN(ceil((y+height)/(double)cell_height), @@ -346,20 +334,22 @@ ProcessList *processlist_construct(void) process_list->process_list_widget = gtk_tree_view_new_with_model (GTK_TREE_MODEL (process_list->list_store)); + g_object_unref (G_OBJECT (process_list->list_store)); - gtk_tree_sortable_set_sort_func( + gtk_tree_sortable_set_default_sort_func( GTK_TREE_SORTABLE(process_list->list_store), - PID_COLUMN, process_sort_func, NULL, NULL); - + + gtk_tree_sortable_set_sort_column_id( GTK_TREE_SORTABLE(process_list->list_store), - PID_COLUMN, + GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING); - + + process_list->process_hash = g_hash_table_new_full( process_list_hash_fct, process_list_equ_fct, destroy_hash_key, destroy_hash_data @@ -383,6 +373,11 @@ ProcessList *processlist_construct(void) NULL, &process_list->cell_height); + guint ypad; + g_object_get(G_OBJECT(renderer), "ypad", &ypad, NULL); + + process_list->cell_height += ypad; + column = gtk_tree_view_column_new_with_attributes ( "Process", renderer, "text", @@ -517,6 +512,16 @@ void destroy_hash_data(gpointer data) g_free(data); } + +void processlist_set_name(ProcessList *process_list, + GQuark name, + HashedProcessData *hashed_process_data) +{ + gtk_list_store_set ( process_list->list_store, &hashed_process_data->y_iter, + PROCESS_COLUMN, g_quark_to_string(name), + -1); +} + int processlist_add( ProcessList *process_list, Drawing_t *drawing, guint pid, @@ -524,7 +529,7 @@ int processlist_add( ProcessList *process_list, guint ppid, LttTime *birth, guint trace_num, - const gchar *name, + GQuark name, guint *height, ProcessInfo **pm_process_info, HashedProcessData **pm_hashed_process_data) @@ -565,7 +570,7 @@ int processlist_add( ProcessList *process_list, &hashed_process_data->y_iter); gtk_list_store_set ( process_list->list_store, &hashed_process_data->y_iter, - PROCESS_COLUMN, name, + PROCESS_COLUMN, g_quark_to_string(name), PID_COLUMN, pid, PPID_COLUMN, ppid, CPU_COLUMN, cpu, @@ -585,7 +590,6 @@ int processlist_add( ProcessList *process_list, hashed_process_data->height = process_list->cell_height; - //hashed_process_data->height = 24; // FIXME g_assert(hashed_process_data->height != 0); *height = hashed_process_data->height * process_list->number_of_process;