On Fri, 16 May 2008, Kjell Konis wrote:
The problem is that my package uses an external pointer to keep track of a
structure created by the lp_solve library. If I use R_CheckUserInterrupt in
the lp_solve abort function it leaves the structure in a messed-up state
after an interrupt occurs. I am not even able to free the memory allocated in
the structure. I need to be able to tell the lp_solve functions to interrupt
themselves if I am going to support interrupts at all.
I took a longer look at errors.c and it seems my solution should work as long
as neither HAVE_AQUA nor Win32 are defined. Under the circumstances, I think
that's the best I can do.
Any suggestions for a UI independent way to check for interrupts would be
appreciated.
Why not use the same code as R_CheckUserInterrupt but instead of calling
onintr, call your own interrupt routine?
Thanks,
Kjell
On 15 mai 08, at 16:41, Prof Brian Ripley wrote:
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@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
--
Brian D. Ripley, [EMAIL PROTECTED]
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
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
--
Brian D. Ripley, [EMAIL PROTECTED]
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
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel