[main] add sigterm handler.
authorhschang <chang@dev3>
Mon, 7 Mar 2016 05:27:36 +0000 (14:27 +0900)
committerhschang <chang@dev3>
Mon, 7 Mar 2016 05:27:58 +0000 (14:27 +0900)
main/enigma.cpp

index 49c5017..6ea4a64 100644 (file)
@@ -122,6 +122,48 @@ public:
 
 int exit_code;
 
 
 int exit_code;
 
+void quitMainloop(int exitCode)
+{
+       FILE *f = fopen("/proc/stb/fp/was_timer_wakeup", "w");
+       if (f)
+       {
+               fprintf(f, "%d", 0);
+               fclose(f);
+       }
+       else
+       {
+               int fd = open("/dev/dbox/fp0", O_WRONLY);
+               if (fd >= 0)
+               {
+                       if (ioctl(fd, 10 /*FP_CLEAR_WAKEUP_TIMER*/) < 0)
+                               eDebug("FP_CLEAR_WAKEUP_TIMER failed (%m)");
+                       close(fd);
+               }
+               else
+                       eDebug("open /dev/dbox/fp0 for wakeup timer clear failed!(%m)");
+       }
+       exit_code = exitCode;
+       eApp->quit(0);
+}
+
+static void sigterm_handler(int num)
+{
+       quitMainloop(128 + num);
+}
+
+void setSigTermHandler()
+{
+       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");
+}
+
 int main(int argc, char **argv)
 {
 #ifdef MEMLEAK_CHECK
 int main(int argc, char **argv)
 {
 #ifdef MEMLEAK_CHECK
@@ -232,6 +274,8 @@ int main(int argc, char **argv)
        
        bsodCatchSignals();
 
        
        bsodCatchSignals();
 
+       setSigTermHandler();
+
        setIoPrio(IOPRIO_CLASS_BE, 3);
 
 //     python.execute("mytest", "__main__");
        setIoPrio(IOPRIO_CLASS_BE, 3);
 
 //     python.execute("mytest", "__main__");
@@ -269,47 +313,9 @@ eApplication *getApplication()
        return eApp;
 }
 
        return eApp;
 }
 
-void quitMainloop(int exitCode)
-{
-       FILE *f = fopen("/proc/stb/fp/was_timer_wakeup", "w");
-       if (f)
-       {
-               fprintf(f, "%d", 0);
-               fclose(f);
-       }
-       else
-       {
-               int fd = open("/dev/dbox/fp0", O_WRONLY);
-               if (fd >= 0)
-               {
-                       if (ioctl(fd, 10 /*FP_CLEAR_WAKEUP_TIMER*/) < 0)
-                               eDebug("FP_CLEAR_WAKEUP_TIMER failed (%m)");
-                       close(fd);
-               }
-               else
-                       eDebug("open /dev/dbox/fp0 for wakeup timer clear failed!(%m)");
-       }
-       exit_code = exitCode;
-       eApp->quit(0);
-}
-
-static void sigterm_handler(int num)
-{
-       quitMainloop(128 + num);
-}
-
 void runMainloop()
 {
 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");
-
+       setSigTermHandler();
        eApp->runLoop();
 }
 
        eApp->runLoop();
 }