*fix* ignore SIGCHLD in way that BSD and linux support

*fix* default background id 0 for panel if not specified in the config file



git-svn-id: http://tint2.googlecode.com/svn/trunk@517 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
Andreas.Fink85 2010-07-03 07:37:17 +00:00
parent c13397aff6
commit a3f33be8ae
2 changed files with 4 additions and 1 deletions

View file

@ -156,6 +156,8 @@ void init_panel()
if (panel_config.monitor < 0)
p->monitor = i;
if ( p->area.bg == 0 )
p->area.bg = &g_array_index(backgrounds, Background, 0);
p->area.parent = p;
p->area.panel = p;
p->area.on_screen = 1;

View file

@ -91,11 +91,12 @@ void init (int argc, char *argv[])
// Set signal handler
signal_pending = 0;
struct sigaction sa = { .sa_handler = signal_handler };
struct sigaction sa_chld = { .sa_handler = SIG_DFL, .sa_flags = SA_NOCLDWAIT };
sigaction(SIGUSR1, &sa, 0);
sigaction(SIGINT, &sa, 0);
sigaction(SIGTERM, &sa, 0);
sigaction(SIGHUP, &sa, 0);
// signal(SIGCHLD, SIG_IGN); // don't have to wait() after fork()
sigaction(SIGCHLD, &sa_chld, 0);
// BSD does not support pselect(), therefore we have to use select and hope that we do not
// end up in a race condition there (see 'man select()' on a linux machine for more information)