diff --git a/bochs/bochs.h b/bochs/bochs.h index 5e0bc013d..b3253641b 100644 --- a/bochs/bochs.h +++ b/bochs/bochs.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: bochs.h,v 1.106 2002-11-03 17:17:09 vruppert Exp $ +// $Id: bochs.h,v 1.107 2002-11-11 17:09:45 cbothamy Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2002 MandrakeSoft S.A. @@ -512,6 +512,10 @@ enum PCS_OP { PCS_CLEAR, PCS_SET, PCS_TOGGLE }; BOCHSAPI extern bx_devices_c bx_devices; #endif +#if BX_GUI_SIGHANDLER +extern bx_bool bx_gui_sighandler; +#endif + // This value controls how often each I/O device's periodic() method // gets called. The timer is set up in iodev/devices.cc. #define BX_IODEV_HANDLER_PERIOD 100 // microseconds diff --git a/bochs/gui/gui.cc b/bochs/gui/gui.cc index 80be1046c..9cfc7263e 100644 --- a/bochs/gui/gui.cc +++ b/bochs/gui/gui.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: gui.cc,v 1.55 2002-11-09 06:41:34 vruppert Exp $ +// $Id: gui.cc,v 1.56 2002-11-11 17:09:57 cbothamy Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2002 MandrakeSoft S.A. @@ -497,11 +497,14 @@ void bx_gui_c::init_signal_handlers () { #if BX_GUI_SIGHANDLER - Bit32u mask = bx_gui->get_sighandler_mask (); - for (Bit32u sig=0; sig<32; sig++) + if (bx_gui_sighandler) { - if (mask & (1<get_sighandler_mask (); + for (Bit32u sig=0; sig<32; sig++) + { + if (mask & (1<get_sighandler_mask ()) { - bx_gui->sighandler (signum); - return; + if (bx_gui_sighandler) { + // GUI signal handler gets first priority, if the mask says it's wanted + if ((1<get_sighandler_mask ()) { + bx_gui->sighandler (signum); + return; + } } #endif @@ -3484,9 +3499,11 @@ bx_signal_handler( int signum) #endif #if BX_GUI_SIGHANDLER - if ((1<get_sighandler_mask ()) { - bx_gui->sighandler (signum); - return; + if (bx_gui_sighandler) { + if ((1<get_sighandler_mask ()) { + bx_gui->sighandler (signum); + return; + } } #endif BX_PANIC(("SIGNAL %u caught", signum));