Make Unix wxAppConsole signal handling more flexible.
Instead of hardcoding the call to WakeUpIdle() in the signal handler itself, just wake up the event loop when we catch a signal. This will still result in WakeUpIdle() being called, before the next event loop iteration, but it will also allow us to do other things on wakeup from signal as it will be done in the upcoming wxExecute() changes to support wxEXEC_NOEVENTS in console applications. See #10258. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74347 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -11,10 +11,17 @@
|
||||
//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);
|
||||
|
||||
@@ -38,6 +45,14 @@ public:
|
||||
// handlers for them
|
||||
void CheckSignal();
|
||||
|
||||
// Register the signal wake up pipe with the given dispatcher.
|
||||
//
|
||||
// This is not used anywhere yet but will be soon.
|
||||
//
|
||||
// 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
|
||||
@@ -52,4 +67,8 @@ private:
|
||||
// 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;
|
||||
};
|
||||
|
Reference in New Issue
Block a user