From b51d06d178e656266ea0bc22e3d144b4cb422362 Mon Sep 17 00:00:00 2001 From: Nikos Ntarmos Date: Thu, 28 May 2009 16:50:19 +0300 Subject: [PATCH] Gracefully exit from main_loop() Signed-off-by: Nikos Ntarmos Signed-off-by: Brenden Matthews --- src/conky.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/conky.c b/src/conky.c index bec0f85..7ac8988 100644 --- a/src/conky.c +++ b/src/conky.c @@ -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 -- 1.7.9.5