better hash functions in state.c and processlist.c
[lttv.git] / ltt / branches / poly / lttv / modules / gui / controlflow / processlist.c
index db29cb8dcdf113abd05a34f30e9675d8677e8060..924d8c52501b795eb673f579433b98304250ff9f 100644 (file)
@@ -233,16 +233,17 @@ gint process_sort_func  ( GtkTreeModel *model,
 
 }
 
-static guint hash_fct(gconstpointer key)
+static guint process_list_hash_fct(gconstpointer key)
 {
-  return ((ProcessInfo*)key)->pid;
+  guint pid = ((ProcessInfo*)key)->pid;
+  return ((pid>>8 ^ pid>>4 ^ pid>>2 ^ pid) ^ ((ProcessInfo*)key)->cpu);
 }
 
-static gboolean equ_fct(gconstpointer a, gconstpointer b)
+static gboolean process_list_equ_fct(gconstpointer a, gconstpointer b)
 {
   const ProcessInfo *pa = (const ProcessInfo*)a;
   const ProcessInfo *pb = (const ProcessInfo*)b;
-
+  
   if(pa->pid != pb->pid)
     return 0;
 
@@ -307,7 +308,7 @@ ProcessList *processlist_construct(void)
       GTK_SORT_ASCENDING);
   
   process_list->process_hash = g_hash_table_new_full(
-      hash_fct, equ_fct,
+      process_list_hash_fct, process_list_equ_fct,
       destroy_hash_key, destroy_hash_data
       );
   
@@ -434,7 +435,7 @@ GtkWidget *processlist_get_widget(ProcessList *process_list)
 
 
 
-__inline gint get_cell_height(ProcessList *process_list, GtkTreeView *tree_view)
+static __inline gint get_cell_height(ProcessList *process_list, GtkTreeView *tree_view)
 {
   gint height = process_list->cell_height_cache;
   if(height != -1) return height;
@@ -541,7 +542,10 @@ int processlist_remove( ProcessList *process_list,
   GtkTreeIter iter;
   
   Process_Info.pid = pid;
-  Process_Info.cpu = cpu;
+  if(pid == 0)
+    Process_Info.cpu = cpu;
+  else
+    Process_Info.cpu = 0;
   Process_Info.birth = *birth;
   Process_Info.trace_num = trace_num;
 
@@ -587,7 +591,10 @@ __inline gint processlist_get_process_pixels(  ProcessList *process_list,
   HashedProcessData *hashed_process_data = NULL;
 
   Process_Info.pid = pid;
-  Process_Info.cpu = cpu;
+  if(pid == 0)
+    Process_Info.cpu = cpu;
+  else
+    Process_Info.cpu = 0;
   Process_Info.birth = *birth;
   Process_Info.trace_num = trace_num;
 
This page took 0.02398 seconds and 4 git commands to generate.