cleanup : global setting outside panel.c

git-svn-id: http://tint2.googlecode.com/svn/trunk@219 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
lorthiois@bbsoft.fr
2009-10-17 19:52:44 +00:00
parent 4592fc25df
commit c83bdf1848
4 changed files with 41 additions and 39 deletions

View File

@@ -74,8 +74,6 @@ static GSList *list_back;
void init_config() void init_config()
{ {
cleanup_panel();
// get monitor and desktop config // get monitor and desktop config
get_monitors(); get_monitors();
get_desktops(); get_desktops();

View File

@@ -18,6 +18,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h>
#include <X11/Xlib.h> #include <X11/Xlib.h>
#include <X11/Xutil.h> #include <X11/Xutil.h>
#include <X11/Xatom.h> #include <X11/Xatom.h>
@@ -61,7 +62,8 @@ Panel panel_config;
Panel *panel1 = 0; Panel *panel1 = 0;
int nb_panel; int nb_panel;
Imlib_Image default_icon; Imlib_Image default_icon = NULL;
void init_panel() void init_panel()
@@ -69,19 +71,6 @@ void init_panel()
int i; int i;
Panel *p; Panel *p;
// load default icon
char *path;
const gchar * const *data_dirs;
data_dirs = g_get_system_data_dirs ();
for (i = 0; data_dirs[i] != NULL; i++) {
path = g_build_filename(data_dirs[i], "tint2", "default_icon.png", NULL);
if (g_file_test (path, G_FILE_TEST_EXISTS))
default_icon = imlib_load_image(path);
g_free(path);
}
//if (panel1)
// free(panel1);
// alloc panels (one monitor or all monitors) // alloc panels (one monitor or all monitors)
if (panel_config.monitor >= 0) if (panel_config.monitor >= 0)
nb_panel = 1; nb_panel = 1;
@@ -204,14 +193,8 @@ void cleanup_panel()
task_active = 0; task_active = 0;
task_drag = 0; task_drag = 0;
task_urgent = 0; task_urgent = 0;
cleanup_systray();
cleanup_taskbar(); cleanup_taskbar();
if (default_icon) {
imlib_context_set_image(default_icon);
imlib_free_image();
}
// font allocated once // font allocated once
if (panel1[0].g_task.font_desc) { if (panel1[0].g_task.font_desc) {
pango_font_description_free(panel1[0].g_task.font_desc); pango_font_description_free(panel1[0].g_task.font_desc);
@@ -224,8 +207,6 @@ void cleanup_panel()
p = &panel1[i]; p = &panel1[i];
free_area(&p->area); free_area(&p->area);
free_area(&p->g_task.area);
free_area(&p->g_taskbar);
if (p->temp_pmap) { if (p->temp_pmap) {
XFreePixmap(server.dsp, p->temp_pmap); XFreePixmap(server.dsp, p->temp_pmap);
@@ -239,15 +220,6 @@ void cleanup_panel()
if (panel1) free(panel1); if (panel1) free(panel1);
panel1 = 0; panel1 = 0;
if (g_tooltip.window) {
XDestroyWindow(server.dsp, g_tooltip.window);
g_tooltip.window = 0;
}
if (g_tooltip.font_desc) {
pango_font_description_free(g_tooltip.font_desc);
g_tooltip.font_desc = 0;
}
} }

View File

@@ -105,7 +105,6 @@ extern Panel panel_config;
extern Panel *panel1; extern Panel *panel1;
extern int nb_panel; extern int nb_panel;
void init_panel(); void init_panel();
void init_panel_size_and_position(Panel *panel); void init_panel_size_and_position(Panel *panel);
void cleanup_panel(); void cleanup_panel();

View File

@@ -103,13 +103,38 @@ void init (int argc, char *argv[])
XSelectInput (server.dsp, server.root_win, PropertyChangeMask|StructureNotifyMask); XSelectInput (server.dsp, server.root_win, PropertyChangeMask|StructureNotifyMask);
setlocale (LC_ALL, ""); setlocale (LC_ALL, "");
// load default icon
int i;
char *path;
const gchar * const *data_dirs;
data_dirs = g_get_system_data_dirs ();
for (i = 0; data_dirs[i] != NULL; i++) {
path = g_build_filename(data_dirs[i], "tint2", "default_icon.png", NULL);
if (g_file_test (path, G_FILE_TEST_EXISTS))
default_icon = imlib_load_image(path);
g_free(path);
}
} }
void cleanup() void cleanup()
{ {
cleanup_systray();
cleanup_panel(); cleanup_panel();
if (default_icon) {
imlib_context_set_image(default_icon);
imlib_free_image();
}
if (g_tooltip.window) {
XDestroyWindow(server.dsp, g_tooltip.window);
g_tooltip.window = 0;
}
if (g_tooltip.font_desc) {
pango_font_description_free(g_tooltip.font_desc);
g_tooltip.font_desc = 0;
}
if (time1_font_desc) pango_font_description_free(time1_font_desc); if (time1_font_desc) pango_font_description_free(time1_font_desc);
if (time2_font_desc) pango_font_description_free(time2_font_desc); if (time2_font_desc) pango_font_description_free(time2_font_desc);
if (time1_format) g_free(time1_format); if (time1_format) g_free(time1_format);
@@ -611,12 +636,20 @@ void event_configure_notify (Window win)
{ {
// change in root window (xrandr) // change in root window (xrandr)
if (win == server.root_win) { if (win == server.root_win) {
int i, old_monitor = server.nb_monitor; int i, old_nb_panel = nb_panel;
get_monitors(); get_monitors();
if (old_monitor != server.nb_monitor) { if (panel_config.monitor >= 0)
nb_panel = 1;
else
nb_panel = server.nb_monitor;
if (old_nb_panel != nb_panel) {
// changed number of panel
printf("changed number of panel\n");
//realloc(panel1, nb_panel * sizeof(Panel));
} }
for (i=0 ; i < nb_panel ; i++) { for (i=0 ; i < nb_panel && i < old_nb_panel ; i++) {
Panel *panel = &panel1[i]; Panel *panel = &panel1[i];
init_panel_size_and_position(panel); init_panel_size_and_position(panel);
@@ -743,7 +776,7 @@ int main (int argc, char *argv[])
GSList *it; GSList *it;
init (argc, argv); init (argc, argv);
load_config:
i = 0; i = 0;
init_config(); init_config();
if (config_path) if (config_path)
@@ -853,7 +886,7 @@ load_config:
switch (signal_pending) { switch (signal_pending) {
case SIGUSR1: case SIGUSR1:
signal_pending = 0; signal_pending = 0;
goto load_config; return 0;
case SIGINT: case SIGINT:
case SIGTERM: case SIGTERM:
case SIGHUP: case SIGHUP: