embedded: Make signal handlers optional

[ChangeLog][Platform Specific Changes] It is now possible to opt out from
installing signal handlers when running with eglfs and linuxfb by setting
the QT_QPA_NO_SIGNAL_HANDLER environment variable to a non-zero value.

Task-number: QTBUG-54733
Change-Id: Ib07d4bbf714c752631c49b76ad0a16677c1ba5bd
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
bb10
Laszlo Agocs 2016-07-26 13:48:28 +02:00
parent b694fe987c
commit 97318a3d5f
1 changed files with 10 additions and 8 deletions

View File

@ -110,14 +110,16 @@ QFbVtHandler::QFbVtHandler(QObject *parent)
m_signalNotifier = new QSocketNotifier(m_sigFd[1], QSocketNotifier::Read, this);
connect(m_signalNotifier, &QSocketNotifier::activated, this, &QFbVtHandler::handleSignal);
struct sigaction sa;
sa.sa_flags = 0;
sa.sa_handler = signalHandler;
sigemptyset(&sa.sa_mask);
sigaction(SIGINT, &sa, 0); // Ctrl+C
sigaction(SIGTSTP, &sa, 0); // Ctrl+Z
sigaction(SIGCONT, &sa, 0);
sigaction(SIGTERM, &sa, 0); // default signal used by kill
if (!qEnvironmentVariableIntValue("QT_QPA_NO_SIGNAL_HANDLER")) {
struct sigaction sa;
sa.sa_flags = 0;
sa.sa_handler = signalHandler;
sigemptyset(&sa.sa_mask);
sigaction(SIGINT, &sa, 0); // Ctrl+C
sigaction(SIGTSTP, &sa, 0); // Ctrl+Z
sigaction(SIGCONT, &sa, 0);
sigaction(SIGTERM, &sa, 0); // default signal used by kill
}
#endif
}