octave-maintainers
[Top][All Lists]
Advanced

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

Re: Does signal trap of CTRL-CLOSE event allowable to be used on windows


From: Tatsuro MATSUOKA
Subject: Re: Does signal trap of CTRL-CLOSE event allowable to be used on windows?
Date: Thu, 14 Jul 2011 14:40:45 +0900 (JST)

Hello

I have execute quick hack the code.

*******************************************************
exporting patch:
<fdopen>
# HG changeset patch
# User Tatsuro MATSUOKA <address@hidden>
# Date 1310598111 -32400
# Node ID bfc000b283dab3600345e787388cf5df3752861a
# Parent  0ca5672d5f1ab4be79b7f1c6053e5cbf7e31c253

Quick hack to avoid close console error by right upper button 
on windows.

diff -r 0ca5672d5f1a -r bfc000b283da src/sighandlers.cc
--- a/src/sighandlers.cc        Thu Jul 07 19:16:14 2011 -0400
+++ b/src/sighandlers.cc        Thu Jul 14 08:01:51 2011 +0900
@@ -433,6 +433,8 @@
         break;

       case CTRL_CLOSE_EVENT:
+        clean_up_and_exit (0);
+        break;
       case CTRL_LOGOFF_EVENT:
       case CTRL_SHUTDOWN_EVENT:
       default:
********************************************************

octave:1> graphics_toolkit fltk
octave:2> peaks
octave:3>
(Then press [x] button)
Some message are coming out but console closes too fast what happened to see.

As you said, it seem not to be easy to quit octave clearly.

Regards

Tatsuro 

The above seemed to work test like the below 



but perhaps need to test further.
Any suggestions ?

--- On Wed, 2011/7/13, Michael Goffioul <address@hidden> wrote:

> That's worth a try. But from the experience of handling CTRL-C event
> (which usually crashes
> octave), it may not be as easy as it sounds.
> 
> Michael.
> 
> 
> On Tue, Jul 12, 2011 at 7:36 PM, Tatsuro MATSUOKA <address@hidden> wrote:
> > Hello
> >
> > Pressing 'X' button on the right upper side windows console always induce 
> > error.
> > If we use  SetConsoleCtrlHandler function and trap CTRL-CLOSE event, we may 
> > eliminate annoy the error.
> >
> > In src/sighandlers.cc,  I found
> >
> > #**From here
> > #ifdef USE_W32_SIGINT
> > static BOOL CALLBACK
> > w32_sigint_handler (DWORD sig)
> > {
> >   const char *sig_name;
> >
> >   switch(sig)
> >     {
> >       case CTRL_BREAK_EVENT:
> >         sig_name = "Ctrl-Break";
> >         break;
> >       case CTRL_C_EVENT:
> >         sig_name = "Ctrl-C";
> >         break;
> >       case CTRL_CLOSE_EVENT:
> >         sig_name = "close console";
> >         break;
> >       case CTRL_LOGOFF_EVENT:
> >         sig_name = "logoff";
> >         break;
> >       case CTRL_SHUTDOWN_EVENT:
> >         sig_name = "shutdown";
> >         break;
> >       default:
> >         sig_name = "unknown console event";
> >         break;
> >     }
> >
> >   switch(sig)
> >     {
> >       case CTRL_BREAK_EVENT:
> >       case CTRL_C_EVENT:
> >         w32_raise (SIGINT);
> >         break;
> >
> >       case CTRL_CLOSE_EVENT:
> >       case CTRL_LOGOFF_EVENT:
> >       case CTRL_SHUTDOWN_EVENT:
> >       default:
> >         // We should do the following:
> >         //    clean_up_and_exit (0);
> >         // We can't because we aren't running in the normal Octave thread.
> >         user_abort(sig_name, sig);
> >         break;
> >     }
> >
> >   // Return TRUE if the event was handled, or FALSE if another handler
> >   // should be called.
> >   // FIXME check that windows terminates the thread.
> >   return TRUE;
> > }
> > # ***********here END
> >
> > If we manipulate arround
> >   case CTRL_CLOSE_EVENT:
> >
> > we may avoid the annoying the error.
> >
> > Regards
> >
> > Tatsuro
> >
> >
> >
>


reply via email to

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