X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2Flib_newwin.c;h=3f7275c110303f1f04f796f29c65328b5e6af564;hp=19f3ec85ccdc24d52987b32a4e8793e018a63c7c;hb=cc79c103a0ba4c9cef4f875de199be1502727b9b;hpb=5242fccf157e715ed878455a3efea6c82b840eb5 diff --git a/ncurses/base/lib_newwin.c b/ncurses/base/lib_newwin.c index 19f3ec85..3f7275c1 100644 --- a/ncurses/base/lib_newwin.c +++ b/ncurses/base/lib_newwin.c @@ -41,7 +41,7 @@ #include -MODULE_ID("$Id: lib_newwin.c,v 1.39 2007/02/03 23:09:20 tom Exp $") +MODULE_ID("$Id: lib_newwin.c,v 1.41 2007/10/20 20:56:07 tom Exp $") static WINDOW * remove_window_from_screen(WINDOW *win) @@ -52,16 +52,22 @@ remove_window_from_screen(WINDOW *win) SCREEN *sp = *scan; if (sp->_curscr == win) { sp->_curscr = 0; +#if !USE_REENTRANT if (win == curscr) curscr = 0; +#endif } else if (sp->_stdscr == win) { sp->_stdscr = 0; +#if !USE_REENTRANT if (win == stdscr) stdscr = 0; +#endif } else if (sp->_newscr == win) { sp->_newscr = 0; +#if !USE_REENTRANT if (win == newscr) newscr = 0; +#endif } else { scan = &(*scan)->_next_screen; continue; @@ -219,6 +225,15 @@ _nc_makenew(int num_lines, int num_columns, int begy, int begx, int flags) if ((wp = typeCalloc(WINDOWLIST, 1)) == 0) returnWin(0); +#ifdef USE_PTHREADS + { + pthread_mutexattr_t recattr; + memset(&recattr, 0, sizeof(recattr)); + pthread_mutexattr_settype(&recattr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&(wp->mutex_use_window), &recattr); + } +#endif + win = &(wp->win); if ((win->_line = typeCalloc(struct ldat, ((unsigned) num_lines))) == 0) {