void cleanup_taskbar() { Panel *panel; Taskbar *tskbar; int i, j, k; cleanup_taskbarname(); if (win_to_task_table) g_hash_table_foreach(win_to_task_table, taskbar_remove_task, 0); for (i=0 ; i < nb_panel ; i++) { panel = &panel1[i]; for (j=0 ; j < panel->nb_desktop ; j++) { tskbar = &panel->taskbar[j]; for (k=0; k<TASKBAR_STATE_COUNT; ++k) { if (tskbar->state_pix[k]) XFreePixmap(server.dsp, tskbar->state_pix[k]); } free_area (&tskbar->area); // remove taskbar from the panel panel->area.list = g_slist_remove(panel->area.list, tskbar); } if (panel->taskbar) { free(panel->taskbar); panel->taskbar = 0; } } if (win_to_task_table) { g_hash_table_destroy(win_to_task_table); win_to_task_table = 0; } }
void cleanup_taskbar() { Panel *panel; Taskbar *tskbar; int i, j, k; cleanup_taskbarname(); if (win_to_task_table) { while (g_hash_table_size(win_to_task_table)) { GHashTableIter iter; gpointer key, value; g_hash_table_iter_init (&iter, win_to_task_table); if (g_hash_table_iter_next (&iter, &key, &value)) { taskbar_remove_task(key, 0, 0); } } } for (i=0 ; i < nb_panel ; i++) { panel = &panel1[i]; for (j=0 ; j < panel->nb_desktop ; j++) { tskbar = &panel->taskbar[j]; for (k=0; k<TASKBAR_STATE_COUNT; ++k) { if (tskbar->state_pix[k]) XFreePixmap(server.dsp, tskbar->state_pix[k]); } free_area (&tskbar->area); // remove taskbar from the panel panel->area.list = g_slist_remove(panel->area.list, tskbar); } if (panel->taskbar) { free(panel->taskbar); panel->taskbar = 0; } } if (win_to_task_table) { g_hash_table_destroy(win_to_task_table); win_to_task_table = 0; } }