X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fworm.c;h=8cac9e223c90132a29bded4c1c20dd1595dc6b16;hp=70c92a2167b390be707585142587320a8fbd8514;hb=6941ed1e8bfdfc7634a57655dc71e7a7ed02a6e8;hpb=5d8dbcdd9423bf9821db414fd9ec792ccf1f1027 diff --git a/test/worm.c b/test/worm.c index 70c92a21..8cac9e22 100644 --- a/test/worm.c +++ b/test/worm.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. * + * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -52,7 +52,7 @@ traces will be dumped. The program stops and waits for one character of input at the beginning and end of the interval. - $Id: worm.c,v 1.75 2017/09/08 20:00:50 tom Exp $ + $Id: worm.c,v 1.79 2018/07/21 21:40:00 tom Exp $ */ #include @@ -97,6 +97,7 @@ static unsigned long sequence = 0; static bool quitting = FALSE; static WORM worm[MAX_WORMS]; +static int max_refs; static int **refs; static int last_x, last_y; @@ -196,6 +197,19 @@ static const struct options { }; /* *INDENT-ON* */ +#if HAVE_USE_WINDOW +static int +safe_wgetch(WINDOW *w, void *data GCC_UNUSED) +{ + return wgetch(w); +} +static int +safe_wrefresh(WINDOW *w, void *data GCC_UNUSED) +{ + return wrefresh(w); +} +#endif + #ifdef KEY_RESIZE static void failed(const char *s) @@ -209,7 +223,7 @@ failed(const char *s) static void cleanup(void) { - USING_WINDOW(stdscr, wrefresh); + USING_WINDOW1(stdscr, wrefresh, safe_wrefresh); exit_curses(); } @@ -290,6 +304,7 @@ draw_worm(WINDOW *win, void *data) switch (op->nopts) { case 0: done = TRUE; + Trace(("done - draw_worm")); break; case 1: w->orientation = op->opts[0]; @@ -380,17 +395,18 @@ static int get_input(void) { int ch; - ch = USING_WINDOW(stdscr, wgetch); + ch = USING_WINDOW1(stdscr, wgetch, safe_wgetch); return ch; } #ifdef KEY_RESIZE static int -update_refs(WINDOW *win) +update_refs(WINDOW *win, void *data) { int x, y; (void) win; + (void) data; if (last_x != COLS - 1) { for (y = 0; y <= last_y; y++) { refs[y] = typeRealloc(int, (size_t) COLS, refs[y]); @@ -404,6 +420,7 @@ update_refs(WINDOW *win) if (last_y != LINES - 1) { for (y = LINES; y <= last_y; y++) free(refs[y]); + max_refs = LINES; refs = typeRealloc(int *, (size_t) LINES, refs); for (y = last_y + 1; y < LINES; y++) { refs[y] = typeMalloc(int, (size_t) COLS); @@ -455,7 +472,6 @@ main(int argc, char *argv[]) struct worm *w; int *ip; bool done = FALSE; - int max_refs; #if HAVE_USE_DEFAULT_COLORS bool opt_d = FALSE; #endif @@ -583,7 +599,7 @@ main(int argc, char *argv[]) } } } - USING_WINDOW(stdscr, wrefresh); + USING_WINDOW1(stdscr, wrefresh, safe_wrefresh); nodelay(stdscr, TRUE); while (!done) { @@ -616,6 +632,7 @@ main(int argc, char *argv[]) if (ch == 'q') { quitting = TRUE; done = TRUE; + Trace(("done - quitting")); continue; } else if (ch == 's') { nodelay(stdscr, FALSE); @@ -626,7 +643,7 @@ main(int argc, char *argv[]) done = draw_all_worms(); napms(10); - USING_WINDOW(stdscr, wrefresh); + USING_WINDOW1(stdscr, wrefresh, safe_wrefresh); } Trace(("Cleanup"));