X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Ftaskbar%2Ftaskbar.c;h=f63c6b14b52e372106bf7c8f908127d588e6409e;hb=d3ffd17946b172b64b2abc646176510a0773bc5f;hp=ffc115a3d65b3ad6bce908c2301d06f10cf5b45b;hpb=ea034ed97924271fbda23bd217984931605374e3;p=chaz%2Ftint2 diff --git a/src/taskbar/taskbar.c b/src/taskbar/taskbar.c index ffc115a..f63c6b1 100644 --- a/src/taskbar/taskbar.c +++ b/src/taskbar/taskbar.c @@ -33,11 +33,15 @@ #include "panel.h" +/* win_to_task_table holds for every Window an array of tasks. Usually the array contains only one + element. However for omnipresent windows (windows which are visible in every taskbar) the array + contains to every Task* on each panel a pointer (i.e. GPtrArray.len == server.nb_desktop) +*/ GHashTable* win_to_task_table = 0; guint win_hash(gconstpointer key) { return (guint)*((Window*)key); } gboolean win_compare(gconstpointer a, gconstpointer b) { return (*((Window*)a) == *((Window*)b)); } - +void free_ptr_array(gpointer data) { g_ptr_array_free(data, 1); } void init_taskbar() { @@ -45,7 +49,7 @@ void init_taskbar() int i, j; if (win_to_task_table == 0) - win_to_task_table = g_hash_table_new_full(win_hash, win_compare, free, g_ptr_array_unref); + win_to_task_table = g_hash_table_new_full(win_hash, win_compare, free, free_ptr_array); for (i=0 ; i < nb_panel ; i++) { panel = &panel1[i];