| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/unix/app.h
- // Purpose: wxAppConsole implementation for Unix
- // Author: Lukasz Michalski
- // Created: 28/01/2005
- // Copyright: (c) Lukasz Michalski
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- //Ensure that sigset_t is being defined
- #include <signal.h>
- class wxFDIODispatcher;
- class wxFDIOHandler;
- class wxWakeUpPipe;
- // wxApp subclass implementing event processing for console applications
- class WXDLLIMPEXP_BASE wxAppConsole : public wxAppConsoleBase
- {
- public:
- wxAppConsole();
- virtual ~wxAppConsole();
- // override base class initialization
- virtual bool Initialize(int& argc, wxChar** argv);
- // Unix-specific: Unix signal handling
- // -----------------------------------
- // type of the function which can be registered as signal handler: notice
- // that it isn't really a signal handler, i.e. it's not subject to the
- // usual signal handlers constraints, because it is called later from
- // CheckSignal() and not when the signal really occurs
- typedef void (*SignalHandler)(int);
- // Set signal handler for the given signal, SIG_DFL or SIG_IGN can be used
- // instead of a function pointer
- //
- // Return true if handler was installed, false on error
- bool SetSignalHandler(int signal, SignalHandler handler);
- // Check if any Unix signals arrived since the last call and execute
- // handlers for them
- void CheckSignal();
- // Register the signal wake up pipe with the given dispatcher.
- //
- // This is used by wxExecute(wxEXEC_NOEVENTS) implementation only.
- //
- // The pointer to the handler used for processing events on this descriptor
- // is returned so that it can be deleted when we no longer needed it.
- wxFDIOHandler* RegisterSignalWakeUpPipe(wxFDIODispatcher& dispatcher);
- private:
- // signal handler set up by SetSignalHandler() for all signals we handle,
- // it just adds the signal to m_signalsCaught -- the real processing is
- // done later, when CheckSignal() is called
- static void HandleSignal(int signal);
- // signals for which HandleSignal() had been called (reset from
- // CheckSignal())
- sigset_t m_signalsCaught;
- // the signal handlers
- WX_DECLARE_HASH_MAP(int, SignalHandler, wxIntegerHash, wxIntegerEqual, SignalHandlerHash);
- SignalHandlerHash m_signalHandlerHash;
- // pipe used for wake up signal handling: if a signal arrives while we're
- // blocking for input, writing to this pipe triggers a call to our CheckSignal()
- wxWakeUpPipe *m_signalWakeUpPipe;
- };
|