void UnixSignals::handleSignal(int number) { qDebug() << "Got signal:" << number; switch (number) { #ifdef SIGBREAK case SIGBREAK: qDebug() << "Got SIGBREAK! emit event!"; emit sigBREAK(); break; #endif #ifdef SIGHUP case SIGHUP: qDebug() << "Got SIGHUP! emit event!"; emit sigHUP(); break; #endif #ifdef SIGINT case SIGINT: qDebug() << "Got SIGINT! emit event!"; emit sigINT(); break; #endif #ifdef SIGTERM case SIGTERM: qDebug() << "Got SIGTERM! emit event!"; emit sigTERM(); break; #endif #ifdef SIGUSR1 case SIGUSR1: qDebug() << "Got SIGUSR1! emit event!"; emit sigUSR1(); break; #endif #ifdef SIGUSR2 case SIGUSR2: qDebug() << "Got SIGUSR2! emit event!"; emit sigUSR2(); break; #endif default: qDebug() << "Got something? Dunno what to do..."; } }
MainWindow::MainWindow() : QMainWindow() { progress = 0; diskCache = NULL; mainSettings = NULL; isUrlRealyChanged = false; handler = new UnixSignals(); connect(handler, SIGNAL(sigBREAK()), SLOT(unixSignalQuit())); connect(handler, SIGNAL(sigTERM()), SLOT(unixSignalQuit())); connect(handler, SIGNAL(sigINT()), SLOT(unixSignalQuit())); connect(handler, SIGNAL(sigHUP()), SLOT(unixSignalHup())); delayedResize = new QTimer(); delayedLoad = new QTimer(); #ifdef USE_TESTLIB simulateClick = new QTestEventList(); #endif }
void UnixSignals::start() { #ifdef SIGBREAK // Available on Windows if (receivers(SIGNAL(sigBREAK())) > 0) { if (signal(SIGBREAK, UnixSignals::signalHandler) == SIG_ERR) { qFatal("Unable to set signal handler on BREAK"); } } else { qDebug("No listeners for signal BREAK"); } #else qWarning("No signal BREAK defined"); #endif #ifdef SIGTERM if (receivers(SIGNAL(sigTERM())) > 0) { if (signal(SIGTERM, UnixSignals::signalHandler) == SIG_ERR) { qFatal("Unable to set signal handler on TERM"); } } else { qDebug("No listeners for signal TERM"); } #else qWarning("No signal TERM defined"); #endif #ifdef SIGINT if (receivers(SIGNAL(sigINT())) > 0) { if (signal(SIGINT, UnixSignals::signalHandler) == SIG_ERR) { qFatal("Unable to set signal handler on INT"); } } else { qDebug("No listeners for signal INT"); } #else qWarning("No signal INT defined"); #endif #ifdef SIGHUP // Unavailable on Windows if (receivers(SIGNAL(sigHUP())) > 0) { if (signal(SIGHUP, UnixSignals::signalHandler) == SIG_ERR) { qFatal("Unable to set signal handler on HUP"); } } else { qDebug("No listeners for signal HUP"); } #else qWarning("No signal HUP defined"); #endif #ifdef SIGUSR1 // Unavailable on Windows if (receivers(SIGNAL(sigUSR1())) > 0) { if (signal(SIGUSR1, UnixSignals::signalHandler) == SIG_ERR) { qFatal("Unable to set signal handler on USR1"); } } else { qDebug("No listeners for signal USR1"); } #else qWarning("No signal USR1 defined"); #endif #ifdef SIGUSR2 // Unavailable on Windows if (receivers(SIGNAL(sigUSR2())) > 0) { if (signal(SIGUSR2, UnixSignals::signalHandler) == SIG_ERR) { qFatal("Unable to set signal handler on USR2"); } } else { qDebug("No listeners for signal USR1"); } #else qWarning("No signal USR2 defined"); #endif }