X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2FguiControlFlow%2FProcess_List.c;h=40e189f6383628dfa081c12d1b88ce6e0534509c;hb=4ba421555910380b407cdf58380bb0182c93d191;hp=f5221394147eb3c7b4071977266942b005c79fd1;hpb=4c69e0cc2b20bbe101918f769842e31101045767;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/guiControlFlow/Process_List.c b/ltt/branches/poly/lttv/modules/guiControlFlow/Process_List.c index f5221394..40e189f6 100644 --- a/ltt/branches/poly/lttv/modules/guiControlFlow/Process_List.c +++ b/ltt/branches/poly/lttv/modules/guiControlFlow/Process_List.c @@ -2,7 +2,7 @@ #include #include #include "Process_List.h" - +#include "Draw_Item.h" /***************************************************************************** * Methods to synchronize process list * @@ -276,9 +276,10 @@ gint get_cell_height(GtkTreeView *TreeView) { gint height; GtkTreeViewColumn *Column = gtk_tree_view_get_column(TreeView, 0); - GList *Render_List = gtk_tree_view_column_get_cell_renderers(Column); - GtkCellRenderer *Renderer = g_list_first(Render_List)->data; + //GList *Render_List = gtk_tree_view_column_get_cell_renderers(Column); + //GtkCellRenderer *Renderer = g_list_first(Render_List)->data; + //g_list_free(Render_List); gtk_tree_view_column_cell_get_size(Column, NULL, NULL, NULL, NULL, &height); //g_critical("cell 0 height : %u",height); @@ -298,15 +299,63 @@ void destroy_hash_data(gpointer data) int processlist_add( ProcessList *Process_List, guint pid, LttTime *birth, - guint *height) + guint *height, + HashedProcessData **pmHashed_Process_Data) { GtkTreeIter iter ; ProcessInfo *Process_Info = g_new(ProcessInfo, 1); - GtkTreeRowReference *RowRef; - + HashedProcessData *Hashed_Process_Data = g_new(HashedProcessData, 1); + *pmHashed_Process_Data = Hashed_Process_Data; + Process_Info->pid = pid; Process_Info->birth = *birth; + Hashed_Process_Data->draw_context = g_new(DrawContext, 1); + Hashed_Process_Data->draw_context->drawable = NULL; + Hashed_Process_Data->draw_context->gc = NULL; + Hashed_Process_Data->draw_context->Current = g_new(DrawInfo,1); + Hashed_Process_Data->draw_context->Current->over = g_new(ItemInfo,1); + Hashed_Process_Data->draw_context->Current->over->x = -1; + Hashed_Process_Data->draw_context->Current->over->y = -1; + Hashed_Process_Data->draw_context->Current->middle = g_new(ItemInfo,1); + Hashed_Process_Data->draw_context->Current->middle->x = -1; + Hashed_Process_Data->draw_context->Current->middle->y = -1; + Hashed_Process_Data->draw_context->Current->under = g_new(ItemInfo,1); + Hashed_Process_Data->draw_context->Current->under->x = -1; + Hashed_Process_Data->draw_context->Current->under->y = -1; + Hashed_Process_Data->draw_context->Current->modify_over = g_new(ItemInfo,1); + Hashed_Process_Data->draw_context->Current->modify_over->x = -1; + Hashed_Process_Data->draw_context->Current->modify_over->y = -1; + Hashed_Process_Data->draw_context->Current->modify_middle = g_new(ItemInfo,1); + Hashed_Process_Data->draw_context->Current->modify_middle->x = -1; + Hashed_Process_Data->draw_context->Current->modify_middle->y = -1; + Hashed_Process_Data->draw_context->Current->modify_under = g_new(ItemInfo,1); + Hashed_Process_Data->draw_context->Current->modify_under->x = -1; + Hashed_Process_Data->draw_context->Current->modify_under->y = -1; + Hashed_Process_Data->draw_context->Current->ts = NULL; + Hashed_Process_Data->draw_context->Current->tfs = NULL; + Hashed_Process_Data->draw_context->Previous = g_new(DrawInfo,1); + Hashed_Process_Data->draw_context->Previous->over = g_new(ItemInfo,1); + Hashed_Process_Data->draw_context->Previous->over->x = -1; + Hashed_Process_Data->draw_context->Previous->over->y = -1; + Hashed_Process_Data->draw_context->Previous->middle = g_new(ItemInfo,1); + Hashed_Process_Data->draw_context->Previous->middle->x = -1; + Hashed_Process_Data->draw_context->Previous->middle->y = -1; + Hashed_Process_Data->draw_context->Previous->under = g_new(ItemInfo,1); + Hashed_Process_Data->draw_context->Previous->under->x = -1; + Hashed_Process_Data->draw_context->Previous->under->y = -1; + Hashed_Process_Data->draw_context->Previous->modify_over = g_new(ItemInfo,1); + Hashed_Process_Data->draw_context->Previous->modify_over->x = -1; + Hashed_Process_Data->draw_context->Previous->modify_over->y = -1; + Hashed_Process_Data->draw_context->Previous->modify_middle = g_new(ItemInfo,1); + Hashed_Process_Data->draw_context->Previous->modify_middle->x = -1; + Hashed_Process_Data->draw_context->Previous->modify_middle->y = -1; + Hashed_Process_Data->draw_context->Previous->modify_under = g_new(ItemInfo,1); + Hashed_Process_Data->draw_context->Previous->modify_under->x = -1; + Hashed_Process_Data->draw_context->Previous->modify_under->y = -1; + Hashed_Process_Data->draw_context->Previous->ts = NULL; + Hashed_Process_Data->draw_context->Previous->tfs = NULL; + /* Add a new row to the model */ gtk_list_store_append ( Process_List->Store_M, &iter); //g_critical ( "iter before : %s", gtk_tree_path_to_string ( @@ -319,15 +368,14 @@ int processlist_add( ProcessList *Process_List, BIRTH_S_COLUMN, birth->tv_sec, BIRTH_NS_COLUMN, birth->tv_nsec, -1); - RowRef = gtk_tree_row_reference_new ( + Hashed_Process_Data->RowRef = gtk_tree_row_reference_new ( GTK_TREE_MODEL(Process_List->Store_M), gtk_tree_model_get_path( GTK_TREE_MODEL(Process_List->Store_M), &iter)); - g_hash_table_insert( Process_List->Process_Hash, (gpointer)Process_Info, - (gpointer)RowRef); + (gpointer)Hashed_Process_Data); //g_critical ( "iter after : %s", gtk_tree_path_to_string ( // gtk_tree_model_get_path ( @@ -349,14 +397,15 @@ int processlist_remove( ProcessList *Process_List, { ProcessInfo Process_Info; gint *path_indices; - GtkTreeRowReference *got_RowRef; + HashedProcessData *Hashed_Process_Data; GtkTreeIter iter; Process_Info.pid = pid; Process_Info.birth = *birth; - if(got_RowRef = - (GtkTreeRowReference*)g_hash_table_lookup( + + if(Hashed_Process_Data = + (HashedProcessData*)g_hash_table_lookup( Process_List->Process_Hash, &Process_Info)) { @@ -364,11 +413,28 @@ int processlist_remove( ProcessList *Process_List, GTK_TREE_MODEL(Process_List->Store_M), &iter, gtk_tree_row_reference_get_path( - (GtkTreeRowReference*)got_RowRef) + (GtkTreeRowReference*)Hashed_Process_Data->RowRef) ); gtk_list_store_remove (Process_List->Store_M, &iter); - + + g_free(Hashed_Process_Data->draw_context->Previous->modify_under); + g_free(Hashed_Process_Data->draw_context->Previous->modify_middle); + g_free(Hashed_Process_Data->draw_context->Previous->modify_over); + g_free(Hashed_Process_Data->draw_context->Previous->under); + g_free(Hashed_Process_Data->draw_context->Previous->middle); + g_free(Hashed_Process_Data->draw_context->Previous->over); + g_free(Hashed_Process_Data->draw_context->Previous); + g_free(Hashed_Process_Data->draw_context->Current->modify_under); + g_free(Hashed_Process_Data->draw_context->Current->modify_middle); + g_free(Hashed_Process_Data->draw_context->Current->modify_over); + g_free(Hashed_Process_Data->draw_context->Current->under); + g_free(Hashed_Process_Data->draw_context->Current->middle); + g_free(Hashed_Process_Data->draw_context->Current->over); + g_free(Hashed_Process_Data->draw_context->Current); + g_free(Hashed_Process_Data->draw_context); + g_free(Hashed_Process_Data); + g_hash_table_remove(Process_List->Process_Hash, &Process_Info); @@ -391,34 +457,34 @@ guint processlist_get_height(ProcessList *Process_List) gint processlist_get_process_pixels( ProcessList *Process_List, guint pid, LttTime *birth, guint *y, - guint *height) + guint *height, + HashedProcessData **pmHashed_Process_Data) { ProcessInfo Process_Info; gint *path_indices; - GtkTreeRowReference *got_RowRef; + GtkTreePath *tree_path; + HashedProcessData *Hashed_Process_Data = NULL; Process_Info.pid = pid; Process_Info.birth = *birth; - if(got_RowRef = - (GtkTreeRowReference*)g_hash_table_lookup( + if(Hashed_Process_Data = + (HashedProcessData*)g_hash_table_lookup( Process_List->Process_Hash, &Process_Info)) { - path_indices = gtk_tree_path_get_indices ( - gtk_tree_row_reference_get_path( - (GtkTreeRowReference*)got_RowRef) - ); + tree_path = gtk_tree_row_reference_get_path( + Hashed_Process_Data->RowRef); + path_indices = gtk_tree_path_get_indices (tree_path); *height = get_cell_height( GTK_TREE_VIEW(Process_List->Process_List_VC)); *y = *height * path_indices[0]; - + *pmHashed_Process_Data = Hashed_Process_Data; return 0; } else { + *pmHashed_Process_Data = Hashed_Process_Data; return 1; } - - }