Gracefully exit from main_loop()
authorNikos Ntarmos <ntarmos@cs.uoi.gr>
Thu, 28 May 2009 13:50:19 +0000 (16:50 +0300)
committerBrenden Matthews <brenden@rty.ca>
Fri, 29 May 2009 03:27:56 +0000 (21:27 -0600)
Signed-off-by: Nikos Ntarmos <ntarmos@cs.uoi.gr>
Signed-off-by: Brenden Matthews <brenden@rty.ca>

src/conky.c

index bec0f85..7ac8988 100644 (file)
@@ -6479,6 +6479,7 @@ int inotify_fd;
 
 static void main_loop(void)
 {
+       int terminate = 0;
 #ifdef SIGNAL_BLOCKING
        sigset_t newmask, oldmask;
 #endif
@@ -6500,7 +6501,7 @@ static void main_loop(void)
 
        next_update_time = last_update_time = get_time();
        info.looped = 0;
-       while (total_run_times == 0 || info.looped < total_run_times) {
+       while (terminate == 0 && (total_run_times == 0 || info.looped < total_run_times)) {
                info.looped++;
 
 #ifdef SIGNAL_BLOCKING
@@ -6776,6 +6777,7 @@ static void main_loop(void)
                        case SIGINT:
                        case SIGTERM:
                                ERR("received SIGINT or SIGTERM to terminate. bye!");
+                               terminate = 1;
                                clean_up();
 #ifdef X11
                                if (output_methods & TO_X) {
@@ -6798,8 +6800,7 @@ static void main_loop(void)
                                        free(append_file);
                                        append_file = 0;
                                }
-                               return; /* return from main_loop */
-                               /* break; */
+                               break;
                        default:
                                /* Reaching here means someone set a signal
                                 * (SIGXXXX, signal_handler), but didn't write any code