X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Fcursesdisplay.c;h=f80c5a613a92f4bc789c7c2fdcada8d25f4fbecb;hb=da4a3c1d8a12b9110bd527d1a57b5b0d7891ac2b;hp=4b76a72fb9b1e5a87d09b471172922b7e59b56c9;hpb=024eb6c668575b8ea6d18165ca9bf591cc9500ca;p=lttngtop.git diff --git a/src/cursesdisplay.c b/src/cursesdisplay.c index 4b76a72..f80c5a6 100644 --- a/src/cursesdisplay.c +++ b/src/cursesdisplay.c @@ -74,11 +74,13 @@ void reset_ncurses() { curs_set(1); endwin(); - exit(0); + quit = 1; } static void handle_sigterm(int signal) { + fprintf(stderr, "caugh signal\n"); + pthread_cancel(keyboard_thread); reset_ncurses(); } @@ -119,6 +121,7 @@ void init_screen() define_key("\033[17;2~", KEY_F(18)); } signal(SIGTERM, handle_sigterm); + signal(SIGINT, handle_sigterm); mousemask(BUTTON1_CLICKED, NULL); refresh(); } @@ -1490,6 +1493,8 @@ void *handle_keyboard(void *p) case KEY_F(10): case 'q': reset_ncurses(); + /* exit keyboard thread */ + pthread_exit(0); break; case 't': toggle_threads *= -1; @@ -1501,7 +1506,6 @@ void *handle_keyboard(void *p) } else { resume_display(); } - break; case 'r': toggle_pref_panel(); break;