1 diff --git a/main/enigma.cpp b/main/enigma.cpp
7 @@ -122,6 +122,48 @@ public:
11 +void quitMainloop(int exitCode)
13 + FILE *f = fopen("/proc/stb/fp/was_timer_wakeup", "w");
16 + fprintf(f, "%d", 0);
21 + int fd = open("/dev/dbox/fp0", O_WRONLY);
24 + if (ioctl(fd, 10 /*FP_CLEAR_WAKEUP_TIMER*/) < 0)
25 + eDebug("FP_CLEAR_WAKEUP_TIMER failed (%m)");
29 + eDebug("open /dev/dbox/fp0 for wakeup timer clear failed!(%m)");
31 + exit_code = exitCode;
35 +static void sigterm_handler(int num)
37 + quitMainloop(128 + num);
40 +void setSigTermHandler()
42 + struct sigaction act;
44 + act.sa_handler = sigterm_handler;
45 + act.sa_flags = SA_RESTART;
47 + if (sigemptyset(&act.sa_mask) == -1)
48 + perror("sigemptyset");
49 + if (sigaction(SIGTERM, &act, 0) == -1)
53 int main(int argc, char **argv)
56 @@ -232,6 +274,8 @@ int main(int argc, char **argv)
60 + setSigTermHandler();
62 setIoPrio(IOPRIO_CLASS_BE, 3);
64 // python.execute("mytest", "__main__");
65 @@ -269,47 +313,9 @@ eApplication *getApplication()
69 -void quitMainloop(int exitCode)
71 - FILE *f = fopen("/proc/stb/fp/was_timer_wakeup", "w");
74 - fprintf(f, "%d", 0);
79 - int fd = open("/dev/dbox/fp0", O_WRONLY);
82 - if (ioctl(fd, 10 /*FP_CLEAR_WAKEUP_TIMER*/) < 0)
83 - eDebug("FP_CLEAR_WAKEUP_TIMER failed (%m)");
87 - eDebug("open /dev/dbox/fp0 for wakeup timer clear failed!(%m)");
89 - exit_code = exitCode;
93 -static void sigterm_handler(int num)
95 - quitMainloop(128 + num);
100 - struct sigaction act;
102 - act.sa_handler = sigterm_handler;
103 - act.sa_flags = SA_RESTART;
105 - if (sigemptyset(&act.sa_mask) == -1)
106 - perror("sigemptyset");
107 - if (sigaction(SIGTERM, &act, 0) == -1)
110 + setSigTermHandler();