event/SignalMonitor: use BoundMethod instead of raw function pointer
This commit is contained in:
@@ -158,7 +158,7 @@ SignalMonitorFinish()
|
||||
sa.sa_handler = SIG_DFL;
|
||||
|
||||
for (unsigned i = 0; i < MAX_SIGNAL; ++i) {
|
||||
if (signal_handlers[i] != nullptr) {
|
||||
if (signal_handlers[i]) {
|
||||
x_sigaction(i, sa);
|
||||
signal_handlers[i] = nullptr;
|
||||
}
|
||||
@@ -179,7 +179,7 @@ SignalMonitorGetEventLoop()
|
||||
void
|
||||
SignalMonitorRegister(int signo, SignalHandler handler)
|
||||
{
|
||||
assert(signal_handlers[signo] == nullptr);
|
||||
assert(!signal_handlers[signo]);
|
||||
#ifndef USE_SIGNALFD
|
||||
assert(!signal_pending[signo]);
|
||||
#endif
|
||||
@@ -209,7 +209,7 @@ SignalMonitor::OnSocketReady(unsigned)
|
||||
int signo;
|
||||
while ((signo = fd.Read()) >= 0) {
|
||||
assert(unsigned(signo) < MAX_SIGNAL);
|
||||
assert(signal_handlers[signo] != nullptr);
|
||||
assert(signal_handlers[signo]);
|
||||
|
||||
signal_handlers[signo]();
|
||||
}
|
||||
|
@@ -26,7 +26,9 @@ class EventLoop;
|
||||
|
||||
#ifndef WIN32
|
||||
|
||||
typedef void (*SignalHandler)();
|
||||
#include "util/BindMethod.hxx"
|
||||
|
||||
typedef BoundMethod<void()> SignalHandler;
|
||||
|
||||
/**
|
||||
* Initialise the signal monitor subsystem.
|
||||
|
Reference in New Issue
Block a user