+gint process_sort_func ( GtkTreeModel *model,
+ GtkTreeIter *it_a,
+ GtkTreeIter *it_b,
+ gpointer user_data)
+{
+ GValue a, b;
+
+ memset(&a, 0, sizeof(GValue));
+ memset(&b, 0, sizeof(GValue));
+
+ /* Order by PID */
+ gtk_tree_model_get_value( model,
+ it_a,
+ PID_COLUMN,
+ &a);
+
+ gtk_tree_model_get_value( model,
+ it_b,
+ PID_COLUMN,
+ &b);
+
+ if(G_VALUE_TYPE(&a) == G_TYPE_UINT
+ && G_VALUE_TYPE(&b) == G_TYPE_UINT )
+ {
+ if(g_value_get_uint(&a) > g_value_get_uint(&b))
+ {
+ g_value_unset(&a);
+ g_value_unset(&b);
+ return 1;
+ }
+ if(g_value_get_uint(&a) < g_value_get_uint(&b))
+ {
+ g_value_unset(&a);
+ g_value_unset(&b);
+ return 0;
+ }
+ }
+
+ g_value_unset(&a);
+ g_value_unset(&b);
+
+
+ /* Order by birth second */
+ gtk_tree_model_get_value( model,
+ it_a,
+ BIRTH_S_COLUMN,
+ &a);
+
+ gtk_tree_model_get_value( model,
+ it_b,
+ BIRTH_S_COLUMN,
+ &b);
+
+
+ if(G_VALUE_TYPE(&a) == G_TYPE_ULONG
+ && G_VALUE_TYPE(&b) == G_TYPE_ULONG )
+ {
+ if(g_value_get_ulong(&a) > g_value_get_ulong(&b))
+ {
+ g_value_unset(&a);
+ g_value_unset(&b);
+ return 1;
+ }
+ if(g_value_get_ulong(&a) < g_value_get_ulong(&b))
+ {
+ g_value_unset(&a);
+ g_value_unset(&b);
+ return 0;
+ }
+
+ }
+
+ g_value_unset(&a);
+ g_value_unset(&b);
+
+ /* Order by birth nanosecond */
+ gtk_tree_model_get_value( model,
+ it_a,
+ BIRTH_NS_COLUMN,
+ &a);
+
+ gtk_tree_model_get_value( model,
+ it_b,
+ BIRTH_NS_COLUMN,
+ &b);
+
+
+ if(G_VALUE_TYPE(&a) == G_TYPE_ULONG
+ && G_VALUE_TYPE(&b) == G_TYPE_ULONG )
+ {
+ if(g_value_get_ulong(&a) > g_value_get_ulong(&b))
+ {
+ g_value_unset(&a);
+ g_value_unset(&b);
+ return 1;
+ }
+ // Final condition
+ //if(g_value_get_ulong(&a) < g_value_get_ulong(&b))
+ //{
+ // g_value_unset(&a);
+ // g_value_unset(&b);
+ // return 0;
+ //}
+
+ }
+
+ g_value_unset(&a);
+ g_value_unset(&b);
+
+ return 0;
+
+}
+
+void send_test_data(ProcessList *Process_List)
+{
+ guint height;
+ int i;
+ ProcessInfo Process_Info = {10000, 12000, 55600};
+ //ProcessInfo Process_Info = {156, 14000, 55500};
+ GtkTreeRowReference *got_RowRef;
+
+ LttTime birth;
+ birth.tv_sec = 12000;
+ birth.tv_nsec = 55500;
+
+ ProcessList_add(Process_List,
+ 1,
+ &birth,
+ &height);
+
+ g_critical("height : %u", height);
+
+ birth.tv_sec = 14000;
+ birth.tv_nsec = 55500;
+
+ ProcessList_add(Process_List,
+ 156,
+ &birth,
+ &height);
+
+ g_critical("height : %u", height);
+
+ birth.tv_sec = 12000;
+ birth.tv_nsec = 55700;
+
+ ProcessList_add(Process_List,
+ 10,
+ &birth,
+ &height);
+
+ for(i=0; i<150; i++)
+ {
+ birth.tv_sec = i*12000;
+ birth.tv_nsec = i*55700;
+
+ ProcessList_add(Process_List,
+ i,
+ &birth,
+ &height);
+
+ }
+ g_critical("height : %u", height);
+
+ birth.tv_sec = 12000;
+ birth.tv_nsec = 55600;
+
+ ProcessList_add(Process_List,
+ 10,
+ &birth,
+ &height);
+ g_critical("height : %u", height);
+
+ ProcessList_add(Process_List,
+ 10000,
+ &birth,
+ &height);
+ g_critical("height : %u", height);
+
+
+ ProcessList_remove( Process_List,
+ 10000,
+ &birth);
+
+ if(got_RowRef =
+ (GtkTreeRowReference*)g_hash_table_lookup(
+ Process_List->Process_Hash,
+ &Process_Info))
+ {
+ g_critical("key found");
+ g_critical("position in the list : %s",
+ gtk_tree_path_to_string (
+ gtk_tree_row_reference_get_path(
+ (GtkTreeRowReference*)got_RowRef)
+ ));
+
+ }
+
+}
+
+
+guint hash_fct(gconstpointer key)
+{
+ return ((ProcessInfo*)key)->pid;
+}
+
+gboolean equ_fct(gconstpointer a, gconstpointer b)
+{
+ if(((ProcessInfo*)a)->pid != ((ProcessInfo*)b)->pid)
+ return 0;
+ g_critical("compare %u and %u",((ProcessInfo*)a)->pid,((ProcessInfo*)b)->pid);
+ if(((ProcessInfo*)a)->birth.tv_sec != ((ProcessInfo*)b)->birth.tv_sec)
+ return 0;
+ g_critical("compare %u and %u",((ProcessInfo*)a)->birth.tv_sec,((ProcessInfo*)b)->birth.tv_sec);
+
+ if(((ProcessInfo*)a)->birth.tv_nsec != ((ProcessInfo*)b)->birth.tv_nsec)
+ return 0;
+ g_critical("compare %u and %u",((ProcessInfo*)a)->birth.tv_nsec,((ProcessInfo*)b)->birth.tv_nsec);
+
+ return 1;
+}
+
+void Destroy_hash_key(gpointer key);
+
+void Destroy_hash_data(gpointer data);
+
+
+
+