summaryrefslogtreecommitdiff
path: root/daemon/display.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/display.c')
-rw-r--r--daemon/display.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/daemon/display.c b/daemon/display.c
index 57647abe..c21eb0f8 100644
--- a/daemon/display.c
+++ b/daemon/display.c
@@ -169,11 +169,10 @@ gdm_display_manage (GdmDisplay *d)
gdm_sigchld_block_push ();
/* If we have an old slave process hanging around, kill it */
- if (d->slavepid) {
- if (kill (d->slavepid, SIGINT) == 0)
+ if (d->slavepid > 0 &&
+ kill (d->slavepid, SIGINT) == 0)
ve_waitpid_no_signal (d->slavepid, 0, 0);
- d->slavepid = 0;
- }
+ d->slavepid = 0;
/* Fork slave process */
gdm_sigterm_block_push ();
@@ -279,11 +278,12 @@ gdm_display_unmanage (GdmDisplay *d)
d->name, (int)d->slavepid);
/* Kill slave */
- if (d->slavepid != 0) {
- if (kill (d->slavepid, SIGTERM) == 0)
- ve_waitpid_no_signal (d->slavepid, 0, 0);
- d->slavepid = 0;
- }
+ gdm_sigchld_block_push ();
+ if (d->slavepid > 0 &&
+ kill (d->slavepid, SIGTERM) == 0)
+ ve_waitpid_no_signal (d->slavepid, 0, 0);
+ d->slavepid = 0;
+ gdm_sigchld_block_pop ();
if (d->type == TYPE_LOCAL)
d->dispstat = DISPLAY_DEAD;