aboutsummaryrefslogtreecommitdiff
path: root/main/enigma.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'main/enigma.cpp')
-rw-r--r--main/enigma.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/main/enigma.cpp b/main/enigma.cpp
index 6bc35714..1cdd867b 100644
--- a/main/enigma.cpp
+++ b/main/enigma.cpp
@@ -268,11 +268,6 @@ eApplication *getApplication()
return eApp;
}
-void runMainloop()
-{
- eApp->runLoop();
-}
-
void quitMainloop(int exitCode)
{
FILE *f = fopen("/proc/stb/fp/was_timer_wakeup", "w");
@@ -297,6 +292,26 @@ void quitMainloop(int exitCode)
eApp->quit(0);
}
+static void sigterm_handler(int num)
+{
+ quitMainloop(128 + num);
+}
+
+void runMainloop()
+{
+ struct sigaction act;
+
+ act.sa_handler = sigterm_handler;
+ act.sa_flags = SA_RESTART;
+
+ if (sigemptyset(&act.sa_mask) == -1)
+ perror("sigemptyset");
+ if (sigaction(SIGTERM, &act, 0) == -1)
+ perror("SIGTERM");
+
+ eApp->runLoop();
+}
+
const char *getEnigmaVersionString()
{
std::string date = enigma2_date;