X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2Flib_getch.c;h=f17b8336f35bed0214d353f927875a09f3669a5d;hp=372d4ac7b2a830e7d9d1cb04d236d168ac614c72;hb=11ca5f62994c7a14c4e500510bd242e1e721f8be;hpb=1078c0231b8a58fbd2dd56b6e0a81b19d6b07f77 diff --git a/ncurses/base/lib_getch.c b/ncurses/base/lib_getch.c index 372d4ac7..f17b8336 100644 --- a/ncurses/base/lib_getch.c +++ b/ncurses/base/lib_getch.c @@ -41,7 +41,7 @@ #include -MODULE_ID("$Id: lib_getch.c,v 1.95 2008/06/07 15:52:51 tom Exp $") +MODULE_ID("$Id: lib_getch.c,v 1.98 2008/08/16 21:20:48 Werner.Fink Exp $") #include @@ -260,15 +260,15 @@ recur_wrefresh(WINDOW *win) { #ifdef USE_PTHREADS SCREEN *sp = _nc_screen_of(win); - if (sp != SP) { + if (_nc_use_pthreads && sp != SP) { SCREEN *save_SP; /* temporarily switch to the window's screen to check/refresh */ _nc_lock_global(curses); save_SP = SP; - SP = sp; + _nc_set_screen(sp); recur_wrefresh(win); - SP = save_SP; + _nc_set_screen(save_SP); _nc_unlock_global(curses); } else #endif @@ -284,23 +284,27 @@ recur_wgetnstr(WINDOW *win, char *buf) SCREEN *sp = _nc_screen_of(win); int rc; + if (sp != 0) { #ifdef USE_PTHREADS - if (sp != SP) { - SCREEN *save_SP; - - /* temporarily switch to the window's screen to get cooked input */ - _nc_lock_global(curses); - save_SP = SP; - SP = sp; - rc = recur_wgetnstr(win, buf); - SP = save_SP; - _nc_unlock_global(curses); - } else + if (_nc_use_pthreads && sp != SP) { + SCREEN *save_SP; + + /* temporarily switch to the window's screen to get cooked input */ + _nc_lock_global(curses); + save_SP = SP; + _nc_set_screen(sp); + rc = recur_wgetnstr(win, buf); + _nc_set_screen(save_SP); + _nc_unlock_global(curses); + } else #endif - { - sp->_called_wgetch = TRUE; - rc = wgetnstr(win, buf, MAXCOLUMNS); - sp->_called_wgetch = FALSE; + { + sp->_called_wgetch = TRUE; + rc = wgetnstr(win, buf, MAXCOLUMNS); + sp->_called_wgetch = FALSE; + } + } else { + rc = ERR; } return rc; }