fixed issue 45, segfault without clock

git-svn-id: http://tint2.googlecode.com/svn/trunk@55 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
lorthiois@bbsoft.fr 2009-02-14 20:11:37 +00:00
parent 283a7fe289
commit 0139382514
8 changed files with 17 additions and 24 deletions

View file

@ -1,6 +1,6 @@
CFLAGS= -O2
CC = gcc
FLAGS=-W -g `pkg-config --cflags --libs cairo pangocairo x11 xinerama imlib2 glib-2.0`
FLAGS=-Wall -g `pkg-config --cflags --libs cairo pangocairo x11 xinerama imlib2 glib-2.0`
PROGNAME=tint2
FILES=tint.c server.c panel.c config.c taskbar/task.c taskbar/taskbar.c clock/clock.c systray/systraybar.c util/window.c util/area.c
@ -23,7 +23,7 @@ endif
$(PROGNAME): $(FILES) $(SYSTRAYOBJ)
$(CC) $(CFLAGS) -I. -Iutil -Iclock -Itaskbar -Isystray -o $(PROGNAME) $(FILES) $(FLAGS)
strip $(PROGNAME)
#strip $(PROGNAME)
install:
mkdir -p $(BINDIR)

View file

@ -48,12 +48,10 @@ void init_clock(Clock *clock, Area *parent)
clock->area.parent = parent;
clock->area.panel = panel;
clock->area._draw_foreground = draw_foreground_clock;
clock->area._resize = resize_clock;
if (!time1_format) return;
// add clock to the panel
panel->area.list = g_slist_append(panel->area.list, clock);
clock->area._draw_foreground = draw_foreground_clock;
clock->area._resize = resize_clock;
if (strchr(time1_format, 'S') == NULL) time_precision = 60;
else time_precision = 1;

View file

@ -573,7 +573,8 @@ void config_finish ()
// force the resize
for (i=0 ; i < nb_panel ; i++) {
panel1[i].area.resize = 1;
resize_clock(&panel1[i].clock);
if (time1_format)
resize_clock(&panel1[i].clock);
}
init_taskbar();

View file

@ -66,6 +66,12 @@ void init_panel()
p->g_taskbar.panel = p;
p->g_task.area.panel = p;
// add childs
if (time1_format)
p->area.list = g_slist_append(p->area.list, &p->clock);
//panel->area.list = g_slist_append(panel->area.list, &panel->trayer);
// detect panel size
if (p->pourcentx)
p->area.width = (float)server.monitor[p->monitor].width * p->initial_width / 100;
else
@ -75,7 +81,6 @@ void init_panel()
else
p->area.height = p->initial_height;
// full width mode
if (!p->area.width)
p->area.width = server.monitor[p->monitor].width;
@ -139,12 +144,6 @@ void cleanup_panel()
for (i=0 ; i < nb_panel ; i++) {
p = &panel1[i];
// freed list of visible objects
if (p->list_visible) {
g_slist_free(p->list_visible);
p->list_visible = 0;
}
free_area(&p->area);
free_area(&p->g_task.area);
free_area(&p->g_taskbar);
@ -220,8 +219,6 @@ void visible_object()
else
panel->clock.area.visible = 0;
//panel->area.list = g_slist_append(panel->area.list, &panel->trayer);
Taskbar *taskbar;
for (j=0 ; j < panel->nb_desktop ; j++) {
taskbar = &panel->taskbar[j];

View file

@ -49,9 +49,6 @@ typedef struct {
// area.list own all objects of the panel according to config file
Area area;
// list of visible objects
GSList *list_visible;
// --------------------------------------------------
// panel
Window main_win;

BIN
src/tint2

Binary file not shown.

View file

@ -25,7 +25,7 @@ border_color = #ffffff 70
#---------------------------------------------
panel_monitor = all
panel_position = bottom center
panel_size = 90% 28
panel_size = 88% 28
panel_margin = 0 0
panel_padding = 7 0
font_shadow = 0

View file

@ -25,14 +25,14 @@ panel_size = 100% 30
panel_margin = 0 0
panel_padding = 6 0 6
font_shadow = 0
panel_background_id = 1
panel_background_id = 0
#---------------------------------------------
# TASKBAR
#---------------------------------------------
taskbar_mode = multi_desktop
taskbar_padding = 8 0 0
taskbar_background_id = 0
taskbar_background_id = 1
#---------------------------------------------
# TASKS
@ -51,13 +51,13 @@ task_active_background_id = 2
#---------------------------------------------
# CLOCK
#---------------------------------------------
time1_format = %A %d %H:%M
#time1_format = %A %d %H:%M
time1_font = Dejavu sans 10
#time2_format = %A %d %B
time2_font = sans 7
clock_font_color = #000000 80
clock_padding = 8 0
clock_background_id = 0
clock_background_id = 1
#---------------------------------------------
# MOUSE ACTION ON TASK