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:
o9000
2015-04-11 09:51:10 +00:00
committed by mrovi9000@gmail.com
parent 321ccc0794
commit af003d0e19
18 changed files with 228 additions and 148 deletions

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;
}