Memory management review: match char-malloc/strdup-free, gchar-g_str*/g_free; set pointers to null after free; initialize fonts/backgrounds correctly when missing from config
git-svn-id: http://tint2.googlecode.com/svn/trunk@748 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
committed by
mrovi9000@gmail.com
parent
321ccc0794
commit
af003d0e19
@@ -618,7 +618,7 @@ void add_urgent(Task *tsk)
|
||||
// not yet in the list, so we have to add it
|
||||
urgent_list = g_slist_prepend(urgent_list, tsk);
|
||||
|
||||
if (urgent_timeout == 0)
|
||||
if (!urgent_timeout)
|
||||
urgent_timeout = add_timeout(10, 1000, blink_urgent, 0);
|
||||
|
||||
Panel *panel = tsk->area.panel;
|
||||
@@ -630,8 +630,8 @@ void add_urgent(Task *tsk)
|
||||
void del_urgent(Task *tsk)
|
||||
{
|
||||
urgent_list = g_slist_remove(urgent_list, tsk);
|
||||
if (urgent_list == 0) {
|
||||
if (!urgent_list) {
|
||||
stop_timeout(urgent_timeout);
|
||||
urgent_timeout = 0;
|
||||
urgent_timeout = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,9 +55,9 @@ void free_ptr_array(gpointer data) { g_ptr_array_free(data, 1); }
|
||||
|
||||
void default_taskbar()
|
||||
{
|
||||
win_to_task_table = 0;
|
||||
urgent_timeout = 0;
|
||||
urgent_list = 0;
|
||||
win_to_task_table = NULL;
|
||||
urgent_timeout = NULL;
|
||||
urgent_list = NULL;
|
||||
taskbar_enabled = 0;
|
||||
taskbar_distribute_size = 0;
|
||||
hide_inactive_tasks = 0;
|
||||
@@ -78,33 +78,38 @@ void cleanup_taskbar()
|
||||
GHashTableIter iter;
|
||||
gpointer key, value;
|
||||
|
||||
g_hash_table_iter_init (&iter, win_to_task_table);
|
||||
if (g_hash_table_iter_next (&iter, &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);
|
||||
}
|
||||
}
|
||||
g_hash_table_destroy(win_to_task_table);
|
||||
win_to_task_table = NULL;
|
||||
}
|
||||
for (i=0 ; i < nb_panel ; i++) {
|
||||
for (i = 0 ; i < nb_panel; i++) {
|
||||
panel = &panel1[i];
|
||||
for (j=0 ; j < panel->nb_desktop ; j++) {
|
||||
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]);
|
||||
for (k = 0; k < TASKBAR_STATE_COUNT; ++k) {
|
||||
if (tskbar->state_pix[k])
|
||||
XFreePixmap(server.dsp, tskbar->state_pix[k]);
|
||||
tskbar->state_pix[k] = 0;
|
||||
}
|
||||
free_area (&tskbar->area);
|
||||
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;
|
||||
panel->taskbar = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (win_to_task_table) {
|
||||
g_hash_table_destroy(win_to_task_table);
|
||||
win_to_task_table = 0;
|
||||
}
|
||||
g_slist_free(urgent_list);
|
||||
urgent_list = NULL;
|
||||
|
||||
stop_timeout(urgent_timeout);
|
||||
urgent_timeout = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -131,6 +136,8 @@ void init_taskbar_panel(void *p)
|
||||
panel->g_taskbar.background_name[TASKBAR_NORMAL] = &g_array_index(backgrounds, Background, 0);
|
||||
panel->g_taskbar.background_name[TASKBAR_ACTIVE] = &g_array_index(backgrounds, Background, 0);
|
||||
}
|
||||
if (!panel->g_task.font_desc)
|
||||
panel->g_task.font_desc = pango_font_description_from_string(DEFAULT_FONT);
|
||||
if (panel->g_task.area.bg == 0)
|
||||
panel->g_task.area.bg = &g_array_index(backgrounds, Background, 0);
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include "taskbarname.h"
|
||||
|
||||
enum { TASKBAR_NORMAL, TASKBAR_ACTIVE, TASKBAR_STATE_COUNT };
|
||||
extern GHashTable* win_to_task_table;
|
||||
extern GHashTable *win_to_task_table;
|
||||
extern Task *task_active;
|
||||
extern Task *task_drag;
|
||||
extern int taskbar_enabled;
|
||||
@@ -27,7 +27,7 @@ typedef struct {
|
||||
Area area;
|
||||
Pixmap state_pix[TASKBAR_STATE_COUNT];
|
||||
|
||||
char *name;
|
||||
gchar *name;
|
||||
int posy;
|
||||
} Taskbarname;
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ Color taskbarname_active_font;
|
||||
void default_taskbarname()
|
||||
{
|
||||
taskbarname_enabled = 0;
|
||||
taskbarname_font_desc = 0;
|
||||
taskbarname_font_desc = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,11 @@ void init_taskbarname_panel(void *p)
|
||||
Taskbar *tskbar;
|
||||
int j;
|
||||
|
||||
if (!taskbarname_enabled) return;
|
||||
if (!taskbarname_enabled)
|
||||
return;
|
||||
|
||||
if (!taskbarname_font_desc)
|
||||
taskbarname_font_desc = pango_font_description_from_string(DEFAULT_FONT);
|
||||
|
||||
GSList *l, *list = server_get_name_of_desktop();
|
||||
for (j=0, l=list ; j < panel->nb_desktop ; j++) {
|
||||
@@ -87,18 +91,24 @@ void cleanup_taskbarname()
|
||||
Panel *panel;
|
||||
Taskbar *tskbar;
|
||||
|
||||
for (i=0 ; i < nb_panel ; i++) {
|
||||
for (i = 0; i < nb_panel; i++) {
|
||||
panel = &panel1[i];
|
||||
for (j=0 ; j < panel->nb_desktop ; j++) {
|
||||
for (j = 0; j < panel->nb_desktop; j++) {
|
||||
tskbar = &panel->taskbar[j];
|
||||
if (tskbar->bar_name.name) g_free(tskbar->bar_name.name);
|
||||
free_area (&tskbar->bar_name.area);
|
||||
for (k=0; k<TASKBAR_STATE_COUNT; ++k) {
|
||||
if (tskbar->bar_name.state_pix[k]) XFreePixmap(server.dsp, tskbar->bar_name.state_pix[k]);
|
||||
g_free(tskbar->bar_name.name);
|
||||
tskbar->bar_name.name = NULL;
|
||||
free_area(&tskbar->bar_name.area);
|
||||
for (k = 0; k < TASKBAR_STATE_COUNT; ++k) {
|
||||
if (tskbar->bar_name.state_pix[k])
|
||||
XFreePixmap(server.dsp, tskbar->bar_name.state_pix[k]);
|
||||
tskbar->bar_name.state_pix[k] = 0;
|
||||
}
|
||||
tskbar->area.list = g_slist_remove(tskbar->area.list, &tskbar->bar_name);
|
||||
}
|
||||
}
|
||||
|
||||
pango_font_description_free(taskbarname_font_desc);
|
||||
taskbarname_font_desc = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user