691a8a544e04daab546d926dea45781f3c69228d
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/unix/appunix.cpp
3 // Purpose: wxAppConsole with wxMainLoop implementation
4 // Author: Lukasz Michalski
7 // Copyright: (c) Lukasz Michalski
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
13 #include "wx/evtloop.h"
18 // use unusual names for arg[cv] to avoid clashes with wxApp members with the
20 bool wxAppConsole::Initialize(int& argc_
, wxChar
** argv_
)
22 if ( !wxAppConsoleBase::Initialize(argc_
, argv_
) )
25 sigemptyset(&m_signalsCaught
);
30 void wxAppConsole::HandleSignal(int signal
)
32 wxAppConsole
* const app
= wxTheApp
;
36 sigaddset(&(app
->m_signalsCaught
), signal
);
40 void wxAppConsole::CheckSignal()
42 for ( SignalHandlerHash::iterator it
= m_signalHandlerHash
.begin();
43 it
!= m_signalHandlerHash
.end();
47 if ( sigismember(&m_signalsCaught
, sig
) )
49 sigdelset(&m_signalsCaught
, sig
);
55 bool wxAppConsole::SetSignalHandler(int signal
, SignalHandler handler
)
57 const bool install
= handler
!= SIG_DFL
&& handler
!= SIG_IGN
;
60 memset(&sa
, 0, sizeof(sa
));
61 sa
.sa_handler
= &wxAppConsole::HandleSignal
;
62 sa
.sa_flags
= SA_RESTART
;
63 int res
= sigaction(signal
, &sa
, 0);
66 wxLogSysError(_("Failed to install signal handler"));
71 m_signalHandlerHash
[signal
] = handler
;
73 m_signalHandlerHash
.erase(signal
);