From 8e51b7f75f99adb32026741507630b1e8706db99 Mon Sep 17 00:00:00 2001 From: Ali Gholami Rudi Date: Fri, 20 May 2011 12:50:30 +0430 Subject: [PATCH] fbpad: re-register signals in signalreceived() --- fbpad.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/fbpad.c b/fbpad.c index edcd869..a146458 100644 --- a/fbpad.c +++ b/fbpad.c @@ -226,10 +226,20 @@ static void mainloop(void) tcsetattr(STDIN_FILENO, 0, &oldtermios); } +static void signalreceived(int n); +static int signalregister(void) +{ + signal(SIGUSR1, signalreceived); + signal(SIGUSR2, signalreceived); + signal(SIGCHLD, signalreceived); +} + static void signalreceived(int n) { if (exitit) return; + /* racy, new signals may arrive before re-registeration */ + signalregister(); switch (n) { case SIGUSR1: hidden = 1; @@ -258,11 +268,8 @@ static void setupsignals(void) vtm.relsig = SIGUSR1; vtm.acqsig = SIGUSR2; vtm.frsig = 0; + signalregister(); ioctl(STDIN_FILENO, VT_SETMODE, &vtm); - - signal(SIGUSR1, signalreceived); - signal(SIGUSR2, signalreceived); - signal(SIGCHLD, signalreceived); } int main(void) -- 2.11.4.GIT