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 CFLAGS= -O2
CC = gcc 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 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 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) $(PROGNAME): $(FILES) $(SYSTRAYOBJ)
$(CC) $(CFLAGS) -I. -Iutil -Iclock -Itaskbar -Isystray -o $(PROGNAME) $(FILES) $(FLAGS) $(CC) $(CFLAGS) -I. -Iutil -Iclock -Itaskbar -Isystray -o $(PROGNAME) $(FILES) $(FLAGS)
strip $(PROGNAME) #strip $(PROGNAME)
install: install:
mkdir -p $(BINDIR) mkdir -p $(BINDIR)

View file

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

View file

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

View file

@ -66,6 +66,12 @@ void init_panel()
p->g_taskbar.panel = p; p->g_taskbar.panel = p;
p->g_task.area.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) if (p->pourcentx)
p->area.width = (float)server.monitor[p->monitor].width * p->initial_width / 100; p->area.width = (float)server.monitor[p->monitor].width * p->initial_width / 100;
else else
@ -75,7 +81,6 @@ void init_panel()
else else
p->area.height = p->initial_height; p->area.height = p->initial_height;
// full width mode // full width mode
if (!p->area.width) if (!p->area.width)
p->area.width = server.monitor[p->monitor].width; p->area.width = server.monitor[p->monitor].width;
@ -139,12 +144,6 @@ void cleanup_panel()
for (i=0 ; i < nb_panel ; i++) { for (i=0 ; i < nb_panel ; i++) {
p = &panel1[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->area);
free_area(&p->g_task.area); free_area(&p->g_task.area);
free_area(&p->g_taskbar); free_area(&p->g_taskbar);
@ -220,8 +219,6 @@ void visible_object()
else else
panel->clock.area.visible = 0; panel->clock.area.visible = 0;
//panel->area.list = g_slist_append(panel->area.list, &panel->trayer);
Taskbar *taskbar; Taskbar *taskbar;
for (j=0 ; j < panel->nb_desktop ; j++) { for (j=0 ; j < panel->nb_desktop ; j++) {
taskbar = &panel->taskbar[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.list own all objects of the panel according to config file
Area area; Area area;
// list of visible objects
GSList *list_visible;
// -------------------------------------------------- // --------------------------------------------------
// panel // panel
Window main_win; Window main_win;

BIN
src/tint2

Binary file not shown.

View file

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

View file

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