_nc_freewin(WINDOW *win) { WINDOWLIST *p, *q; int i; int result = ERR; T((T_CALLED("_nc_freewin(%p)"), win)); if (win != 0) { if (_nc_try_global(curses) == 0) { q = 0; for (each_window(p)) { if (&(p->win) == win) { remove_window_from_screen(win); if (q == 0) _nc_windows = p->next; else q->next = p->next; if (!(win->_flags & _SUBWIN)) { for (i = 0; i <= win->_maxy; i++) FreeIfNeeded(win->_line[i].text); } free(win->_line); free(p); result = OK; T(("...deleted win=%p", win)); break; } q = p; } _nc_unlock_global(curses); } }
delwin(WINDOW *win) { int result = ERR; T((T_CALLED("delwin(%p)"), (void *) win)); if (_nc_try_global(curses) == 0) { if (win == 0 || cannot_delete(win)) { result = ERR; } else { #if NCURSES_SP_FUNCS SCREEN *sp = _nc_screen_of(win); #endif if (win->_flags & _SUBWIN) touchwin(win->_parent); else if (CurScreen(SP_PARM) != 0) touchwin(CurScreen(SP_PARM)); result = _nc_freewin(win); } _nc_unlock_global(curses); } returnCode(result); }
_nc_use_tracef(unsigned mask) { bool result = FALSE; _nc_lock_global(tst_tracef); if (!_nc_globals.nested_tracef++) { if ((result = (_nc_tracing & (mask))) != 0 && _nc_try_global(tracef) == 0) { /* we will call _nc_locked_tracef(), no nesting so far */ } else { /* we will not call _nc_locked_tracef() */ _nc_globals.nested_tracef = 0; } } else { /* we may call _nc_locked_tracef(), but with nested_tracef > 0 */ result = (_nc_tracing & (mask)); } _nc_unlock_global(tst_tracef); return result; }
delwin(WINDOW *win) { int result = ERR; T((T_CALLED("delwin(%p)"), win)); if (_nc_try_global(curses) == 0) { if (win == 0 || cannot_delete(win)) { result = ERR; } else { if (win->_flags & _SUBWIN) touchwin(win->_parent); else if (curscr != 0) touchwin(curscr); result = _nc_freewin(win); } _nc_unlock_global(curses); } returnCode(result); }