]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/base/lib_set_term.c
ncurses 5.7 - patch 20091031
[ncurses.git] / ncurses / base / lib_set_term.c
index 49752fd71e31330635f5f13141f3f409a0d02053..9bb46fc7f8b4849cccabf3789b8f5b91cf15c4f1 100644 (file)
@@ -47,7 +47,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_set_term.c,v 1.128 2009/09/27 14:21:25 tom Exp $")
+MODULE_ID("$Id: lib_set_term.c,v 1.131 2009/10/31 22:28:04 tom Exp $")
 
 #ifdef USE_TERM_DRIVER
 #define MaxColors      InfoOf(sp).maxcolors
@@ -63,7 +63,7 @@ set_term(SCREEN *screenp)
     SCREEN *oldSP;
     SCREEN *newSP;
 
-    T((T_CALLED("set_term(%p)"), screenp));
+    T((T_CALLED("set_term(%p)"), (void *) screenp));
 
     _nc_lock_global(curses);
 
@@ -93,7 +93,7 @@ set_term(SCREEN *screenp)
 
     _nc_unlock_global(curses);
 
-    T((T_RETURN("%p"), oldSP));
+    T((T_RETURN("%p"), (void *) oldSP));
     return (oldSP);
 }
 
@@ -136,7 +136,7 @@ delscreen(SCREEN *sp)
 {
     int i;
 
-    T((T_CALLED("delscreen(%p)"), sp));
+    T((T_CALLED("delscreen(%p)"), (void *) sp));
 
     _nc_lock_global(curses);
     if (delink_screen(sp)) {
@@ -282,24 +282,31 @@ extract_fgbg(char *src, int *result)
 NCURSES_EXPORT(SCREEN *)
 new_prescr(void)
 {
-    SCREEN *sp = _nc_alloc_screen_sp();
-    if (sp) {
-       sp->rsp = sp->rippedoff;
-       sp->_filtered = _nc_prescreen.filter_mode;
-       sp->_use_env = _nc_prescreen.use_env;
+    static SCREEN *sp;
+
+    START_TRACE();
+    T((T_CALLED("new_prescr()")));
+
+    if (sp == 0) {
+       sp = _nc_alloc_screen_sp();
+       if (sp != 0) {
+           sp->rsp = sp->rippedoff;
+           sp->_filtered = _nc_prescreen.filter_mode;
+           sp->_use_env = _nc_prescreen.use_env;
 #if NCURSES_NO_PADDING
-       sp->_no_padding = _nc_prescreen._no_padding;
+           sp->_no_padding = _nc_prescreen._no_padding;
 #endif
-       sp->slk_format = 0;
-       sp->_slk = 0;
-       sp->_prescreen = TRUE;
-       SP_PRE_INIT(sp);
+           sp->slk_format = 0;
+           sp->_slk = 0;
+           sp->_prescreen = TRUE;
+           SP_PRE_INIT(sp);
 #if USE_REENTRANT
-       sp->_TABSIZE = _nc_prescreen._TABSIZE;
-       sp->_ESCDELAY = _nc_prescreen._ESCDELAY;
+           sp->_TABSIZE = _nc_prescreen._TABSIZE;
+           sp->_ESCDELAY = _nc_prescreen._ESCDELAY;
 #endif
+       }
     }
-    return sp;
+    returnSP(sp);
 }
 #endif
 
@@ -327,7 +334,7 @@ NCURSES_SP_NAME(_nc_setupscreen) (
 #endif
 
     T((T_CALLED("_nc_setupscreen(%d, %d, %p, %d, %d)"),
-       slines, scolumns, output, filtered, slk_format));
+       slines, scolumns, (void *) output, filtered, slk_format));
 
     assert(CURRENT_SCREEN == 0);       /* has been reset in newterm() ! */
 
@@ -359,7 +366,7 @@ NCURSES_SP_NAME(_nc_setupscreen) (
        returnCode(ERR);
     }
 
-    T(("created SP %p", SP));
+    T(("created SP %p", (void *) SP));
 
     sp = SP;                   /* fixup so SET_LINES and SET_COLS works */
     sp->_next_screen = _nc_screen_chain;
@@ -667,9 +674,11 @@ NCURSES_SP_NAME(_nc_setupscreen) (
               We assume that we must simulate, if it is none of the standard
               formats (4-4 or 3-2-3) for which there may be some hardware
               support. */
-           if (rop->hook == _nc_slk_initialize)
-               if (!(NumLabels <= 0 || !SLK_STDFMT(slk_format)))
+           if (rop->hook == _nc_slk_initialize) {
+               if (!(NumLabels <= 0 || !SLK_STDFMT(slk_format))) {
                    continue;
+               }
+           }
            if (rop->hook) {
                int count;
                WINDOW *w;
@@ -751,9 +760,12 @@ NCURSES_SP_NAME(_nc_ripoffline) (NCURSES_SP_DCLx
     int code = ERR;
 
     START_TRACE();
-    T((T_CALLED("ripoffline(%p,%d,%p)"), SP_PARM, line, init));
+    T((T_CALLED("ripoffline(%p,%d,%p)"), (void *) SP_PARM, line, (void *) init));
 
-    if (SP_PARM != 0 && SP_PARM->_prescreen) {
+#if NCURSES_SP_FUNCS
+    if (SP_PARM != 0 && SP_PARM->_prescreen)
+#endif
+    {
        if (line == 0) {
            code = OK;
        } else {