discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Terminate NSApp gracefully when receiving SIGNIT. )Fwd: [Etoile-disc


From: Fred Kiefer
Subject: Re: Terminate NSApp gracefully when receiving SIGNIT. )Fwd: [Etoile-discuss] Etoile 0.2 on Solaris)
Date: Wed, 01 Aug 2007 11:28:04 +0200
User-agent: Thunderbird 1.5.0.12 (X11/20060911)

I like the idea of responding to signals properly, but checking for
unistd.h and then including signal.h is clearly wrong. When we add
something, we need to add it the clean way.

And actually we already have this code in place. In back we have for x11
a very similar call to signal:

  signal(SIGTERM, terminate);

and terminate() is of course:

static void
terminate(int sig)
{
  [NSApp terminate: NSApp];
}

Now we only need to decide if we think that SIGINT should be handled the
same as SIGTERM. And if so add one line to XGServer.m

Cheers,
Fred

Yen-Ju Chen wrote:
> Hi,
> 
>   Here is a patch from David to terminate NSApp gracefully
>   when an application receive a SIGINT signal.
>   It is what NSApp on Cocoa behaves.
>   So it is nice to have it in GNUstep.
> 
>   Thanx.
> 
>   Yen-Ju
> 
> ---------- Forwarded message ----------
> From: David Chisnall <theraven@sucs.org>
> Date: Jul 31, 2007 5:12 PM
> Subject: Re: [Etoile-discuss] Etoile 0.2 on Solaris
> To: Discussion list for Étoilé desktop environment <etoile-discuss@gna.org>
> 
> 
> On 1 Aug 2007, at 00:37, Yen-Ju Chen wrote:
> 
>>   Maybe we should file a feature request to GNUstep ?
> 
> Or I could just implement it.  Here's the diff, let me know if you
> have any problems (if there aren't any, can someone push it upstream;
> the FSF now have my copyright assignment form):
> 
> *** NSApplication.m.original    Tue Jul  3 19:21:11 2007
> --- NSApplication.m     Wed Aug  1 01:09:50 2007
> ***************
> *** 31,36 ****
> --- 31,39 ----
> 
>    #include "config.h"
>    #include <stdio.h>
> + #ifdef HAVE_UNISTD_H
> + #include <signal.h>
> + #endif //HAVE_UNISTD_H
> 
>    #include <Foundation/NSArray.h>
>    #include <Foundation/NSAutoreleasePool.h>
> ***************
> *** 95,100 ****
> --- 98,113 ----
>    static NSUncaughtExceptionHandler *defaultUncaughtExceptionHandler;
> 
>    /*
> +  * Terminate cleanly if instructed.
> +  */
> + #ifdef HAVE_UNISTD_H
> + void terminateApp(int sig)
> + {
> +   [NSApp terminate:nil];
> + }
> + #endif //HAVE_UNISTD_H
> +
> + /*
>     * Gui library user friendly exception handler
>     */
>    static void
> ***************
> *** 455,460 ****
> --- 468,476 ----
>      tileCell = [[NSCell alloc] initImageCell: tileImage];
>      RELEASE(tileImage);
>      [tileCell setBordered: NO];
> + #ifdef HAVE_UNISTD_H
> +   signal(SIGINT, terminateApp);
> + #endif //HAVE_UNISTD_H
>    }
> 
>    - (BOOL) acceptsFirstMouse: (NSEvent*)theEvent
> 
> _______________________________________________
> Etoile-discuss mailing list
> Etoile-discuss@gna.org
> https://mail.gna.org/listinfo/etoile-discuss
> 
> 
> _______________________________________________
> Discuss-gnustep mailing list
> Discuss-gnustep@gnu.org
> http://lists.gnu.org/mailman/listinfo/discuss-gnustep
> 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]