From ripley at stats.ox.ac.uk  Thu May 15 16:41:48 2008
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Thu, 15 May 2008 15:41:48 +0100 (BST)
Subject: [Rd] interrupting native code
In-Reply-To: <B2675BBE-97A5-4012-A855-6955F6EE8246@epfl.ch>
References: <B2675BBE-97A5-4012-A855-6955F6EE8246@epfl.ch>
Message-ID: <alpine.LFD.1.10.0805151533180.22788@gannet.stats.ox.ac.uk>

How is R_interrupts_pending going to be set?

It is set in the interrupt handler for SIGINT, but that is not the only 
way to indicate an interrupt, and it is not necessarily available to users 
of GUIs and embedded R.

Without servicing the GUIs all interaction will be dead, including sending 
an interrrupt from menus/buttons/keyboard.  See the comment in the code 
for R_CheckUserInterrupt.

On Thu, 15 May 2008, Kjell Konis wrote:

> Hello,
>
> I have some native code that I would like to allow users to interrupt. 
> However, I would like to do it more gracefully than with 
> R_CheckUserInterrupt(). The solution I came up with is to call the following 
> abort function periodically - if it returns 1 then I clean up and return.
>
> int __WINAPI RlpSolveAbortFunction(lprec *lp, void *userhandle)
> {
> if(R_interrupts_pending)
>   return(1);
>
> return(0);
> }
>
> This seems to work fine on Mac (sans Aqua) and Linux. Is this going to be 
> portable?  Also, is there anything else I need to do?  For instance set 
> R_interrupts_pending to 0 after I respond to it?
>
> Thanks.
> Kjell
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



[Rd] interrupting native code
Prof Brian Ripley