*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:
parent
c13397aff6
commit
a3f33be8ae
2 changed files with 4 additions and 1 deletions
|
@ -156,6 +156,8 @@ void init_panel()
|
||||||
|
|
||||||
if (panel_config.monitor < 0)
|
if (panel_config.monitor < 0)
|
||||||
p->monitor = i;
|
p->monitor = i;
|
||||||
|
if ( p->area.bg == 0 )
|
||||||
|
p->area.bg = &g_array_index(backgrounds, Background, 0);
|
||||||
p->area.parent = p;
|
p->area.parent = p;
|
||||||
p->area.panel = p;
|
p->area.panel = p;
|
||||||
p->area.on_screen = 1;
|
p->area.on_screen = 1;
|
||||||
|
|
|
@ -91,11 +91,12 @@ void init (int argc, char *argv[])
|
||||||
// Set signal handler
|
// Set signal handler
|
||||||
signal_pending = 0;
|
signal_pending = 0;
|
||||||
struct sigaction sa = { .sa_handler = signal_handler };
|
struct sigaction sa = { .sa_handler = signal_handler };
|
||||||
|
struct sigaction sa_chld = { .sa_handler = SIG_DFL, .sa_flags = SA_NOCLDWAIT };
|
||||||
sigaction(SIGUSR1, &sa, 0);
|
sigaction(SIGUSR1, &sa, 0);
|
||||||
sigaction(SIGINT, &sa, 0);
|
sigaction(SIGINT, &sa, 0);
|
||||||
sigaction(SIGTERM, &sa, 0);
|
sigaction(SIGTERM, &sa, 0);
|
||||||
sigaction(SIGHUP, &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
|
// 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)
|
// end up in a race condition there (see 'man select()' on a linux machine for more information)
|
||||||
|
|
Loading…
Reference in a new issue