X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e0954e729dabaad5603d9970d123d6b96ed73463..07aaf32633ecf18ec3edfbb41793a112914792d0:/src/unix/appunix.cpp?ds=sidebyside diff --git a/src/unix/appunix.cpp b/src/unix/appunix.cpp index db90d98ffe..5c59dec71c 100644 --- a/src/unix/appunix.cpp +++ b/src/unix/appunix.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wx/unix/appunix.cpp +// Name: src/unix/appunix.cpp // Purpose: wxAppConsole with wxMainLoop implementation // Author: Lukasz Michalski // Created: 28/01/2005 @@ -8,16 +8,32 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#include "wx/app.h" -#include "wx/log.h" +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/app.h" + #include "wx/log.h" +#endif + #include "wx/evtloop.h" #include #include -bool wxAppConsole::Initialize(int& argc, wxChar** argv) +#ifndef SA_RESTART + // don't use for systems which don't define it (at least VMS and QNX) + #define SA_RESTART 0 +#endif + +// use unusual names for arg[cv] to avoid clashes with wxApp members with the +// same names +bool wxAppConsole::Initialize(int& argc_, wxChar** argv_) { - if ( !wxAppConsoleBase::Initialize(argc,argv) ) + if ( !wxAppConsoleBase::Initialize(argc_, argv_) ) return false; sigemptyset(&m_signalsCaught); @@ -50,13 +66,23 @@ void wxAppConsole::CheckSignal() } } +// the type of the signal handlers we use is "void(*)(int)" while the real +// signal handlers are extern "C" and so have incompatible type and at least +// Sun CC warns about it, so use explicit casts to suppress these warnings as +// they should be harmless +extern "C" +{ + typedef void (*SignalHandler_t)(int); +} + bool wxAppConsole::SetSignalHandler(int signal, SignalHandler handler) { - const bool install = handler != SIG_DFL && handler != SIG_IGN; + const bool install = (SignalHandler_t)handler != SIG_DFL && + (SignalHandler_t)handler != SIG_IGN; struct sigaction sa; memset(&sa, 0, sizeof(sa)); - sa.sa_handler = &wxAppConsole::HandleSignal; + sa.sa_handler = (SignalHandler_t)&wxAppConsole::HandleSignal; sa.sa_flags = SA_RESTART; int res = sigaction(signal, &sa, 0); if ( res != 0 )