]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/tty/tty_update.c
ncurses 5.9 - patch 20110416
[ncurses.git] / ncurses / tty / tty_update.c
index 6de4ecb2f8002db920ce0afdf32f52f7fb775dd1..f0d2369c18d6e65fedf3f817d5dfddded575f268 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,2010 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            *
@@ -82,7 +82,7 @@
 
 #include <ctype.h>
 
-MODULE_ID("$Id: tty_update.c,v 1.257 2009/06/06 20:26:16 tom Exp $")
+MODULE_ID("$Id: tty_update.c,v 1.264 2010/12/19 01:21:02 tom Exp $")
 
 /*
  * This define controls the line-breakout optimization.  Every once in a
@@ -193,12 +193,14 @@ static NCURSES_INLINE void
 GoTo(NCURSES_SP_DCLx int const row, int const col)
 {
     TR(TRACE_MOVE, ("GoTo(%p, %d, %d) from (%d, %d)",
-                   SP_PARM, row, col, SP_PARM->_cursrow, SP_PARM->_curscol));
+                   (void *) SP_PARM, row, col, SP_PARM->_cursrow, SP_PARM->_curscol));
 
     position_check(SP_PARM, SP_PARM->_cursrow, SP_PARM->_curscol, "GoTo");
 
-    NCURSES_SP_NAME(mvcur) (NCURSES_SP_ARGx SP_PARM->_cursrow,
-                           SP_PARM->_curscol, row, col);
+    TINFO_MVCUR(NCURSES_SP_ARGx
+               SP_PARM->_cursrow,
+               SP_PARM->_curscol,
+               row, col);
     position_check(SP_PARM, SP_PARM->_cursrow, SP_PARM->_curscol, "GoTo2");
 }
 
@@ -495,7 +497,9 @@ can_clear_with(NCURSES_SP_DCLx ARG_CH_T ch)
            return FALSE;
        if ((pair = GetPair(CHDEREF(ch))) != 0) {
            short fg, bg;
-           NCURSES_SP_NAME(pair_content) (NCURSES_SP_ARGx pair, &fg, &bg);
+           NCURSES_SP_NAME(pair_content) (NCURSES_SP_ARGx
+                                          (short) pair,
+                                          &fg, &bg);
            if (fg != C_MASK || bg != C_MASK)
                return FALSE;
        }
@@ -626,7 +630,10 @@ PutRange(NCURSES_SP_DCLx
     int i, j, same;
 
     TR(TRACE_CHARPUT, ("PutRange(%p, %p, %p, %d, %d, %d)",
-                      SP_PARM, otext, ntext, row, first, last));
+                      (void *) SP_PARM,
+                      (const void *) otext,
+                      (const void *) ntext,
+                      row, first, last));
 
     if (otext != ntext
        && (last - first + 1) > SP_PARM->_inline_cost) {
@@ -660,7 +667,7 @@ PutRange(NCURSES_SP_DCLx
                if_USE_SCROLL_HINTS(win->_line[row].oldindex = row)
 
 NCURSES_EXPORT(int)
-NCURSES_SP_NAME(doupdate) (NCURSES_SP_DCL0)
+TINFO_DOUPDATE(NCURSES_SP_DCL0)
 {
     int i;
     int nonempty;
@@ -668,7 +675,7 @@ NCURSES_SP_NAME(doupdate) (NCURSES_SP_DCL0)
     struct tms before, after;
 #endif /* USE_TRACE_TIMES */
 
-    T((T_CALLED("_nc_tinfo:doupdate(%p)"), SP_PARM));
+    T((T_CALLED("_nc_tinfo:doupdate(%p)"), (void *) SP_PARM));
 
 #if !USE_REENTRANT
     /*
@@ -1003,11 +1010,11 @@ NCURSES_SP_NAME(doupdate) (NCURSES_SP_DCL0)
     returnCode(OK);
 }
 
-#if NCURSES_SP_FUNCS
+#if NCURSES_SP_FUNCS && !defined(USE_TERM_DRIVER)
 NCURSES_EXPORT(int)
 doupdate(void)
 {
-    return NCURSES_SP_NAME(doupdate) (CURRENT_SCREEN);
+    return TINFO_DOUPDATE(CURRENT_SCREEN);
 }
 #endif
 
@@ -1073,24 +1080,24 @@ ClrToEOL(NCURSES_SP_DCLx NCURSES_CH_T blank, bool needclear)
 {
     int j;
 
-    if (SP_PARM != 0 && CurScreen(SP_PARM) != 0
-       && SP_PARM->_cursrow >= 0) {
-       for (j = SP_PARM->_curscol; j < screen_columns(SP_PARM); j++) {
-           if (j >= 0) {
-               NCURSES_CH_T *cp =
-               &(CurScreen(SP_PARM)->_line[SP_PARM->_cursrow].text[j]);
-
-               if (!CharEq(*cp, blank)) {
-                   *cp = blank;
-                   needclear = TRUE;
+    if (SP_PARM != 0) {
+       if (CurScreen(SP_PARM) != 0
+           && SP_PARM->_cursrow >= 0) {
+           for (j = SP_PARM->_curscol; j < screen_columns(SP_PARM); j++) {
+               if (j >= 0) {
+                   NCURSES_CH_T *cp =
+                   &(CurScreen(SP_PARM)->_line[SP_PARM->_cursrow].text[j]);
+
+                   if (!CharEq(*cp, blank)) {
+                       *cp = blank;
+                       needclear = TRUE;
+                   }
                }
            }
        }
-    } else {
-       needclear = TRUE;
     }
 
-    if (needclear) {
+    if (needclear && (SP_PARM != 0)) {
        UpdateAttrs(SP_PARM, blank);
        TPUTS_TRACE("clr_eol");
        if (clr_eol && SP_PARM->_el_cost <= (screen_columns(SP_PARM) - SP_PARM->_curscol)) {
@@ -1199,7 +1206,7 @@ ClrBottom(NCURSES_SP_DCLx int total)
 **     TransformLine(lineno)
 **
 **     Transform the given line in curscr to the one in newscr, using
-**     Insert/Delete Character if _nc_idcok && has_ic().
+**     Insert/Delete Character if idcok && has_ic().
 **
 **             firstChar = position of first different character in line
 **             oLastChar = position of last different character in old line
@@ -1222,7 +1229,7 @@ TransformLine(NCURSES_SP_DCLx int const lineno)
     int n;
     bool attrchanged = FALSE;
 
-    TR(TRACE_UPDATE, (T_CALLED("TransformLine(%p, %d)"), SP_PARM, lineno));
+    TR(TRACE_UPDATE, (T_CALLED("TransformLine(%p, %d)"), (void *) SP_PARM, lineno));
 
     /* copy new hash value to old one */
     if (SP_PARM->oldhash && SP_PARM->newhash)
@@ -1408,7 +1415,7 @@ TransformLine(NCURSES_SP_DCLx int const lineno)
                         nLastChar);
                memcpy(oldLine + firstChar,
                       newLine + firstChar,
-                      (nLastChar - firstChar + 1) * sizeof(NCURSES_CH_T));
+                      (unsigned) (nLastChar - firstChar + 1) * sizeof(NCURSES_CH_T));
            }
            TR(TRACE_UPDATE, (T_RETURN("")));
            return;
@@ -1530,7 +1537,7 @@ TransformLine(NCURSES_SP_DCLx int const lineno)
     if (screen_columns(SP_PARM) > firstChar)
        memcpy(oldLine + firstChar,
               newLine + firstChar,
-              (screen_columns(SP_PARM) - firstChar) * sizeof(NCURSES_CH_T));
+              (unsigned) (screen_columns(SP_PARM) - firstChar) * sizeof(NCURSES_CH_T));
     TR(TRACE_UPDATE, (T_RETURN("")));
     return;
 }
@@ -1554,7 +1561,7 @@ ClearScreen(NCURSES_SP_DCLx NCURSES_CH_T blank)
     if (SP_PARM->_coloron
        && !SP_PARM->_default_color) {
        NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx
-                                      GET_SCREEN_PAIR(SP_PARM),
+                                      (short) GET_SCREEN_PAIR(SP_PARM),
                                       0,
                                       FALSE,
                                       NCURSES_SP_NAME(_nc_outch));
@@ -1621,7 +1628,9 @@ ClearScreen(NCURSES_SP_DCLx NCURSES_CH_T blank)
 static void
 InsStr(NCURSES_SP_DCLx NCURSES_CH_T * line, int count)
 {
-    TR(TRACE_UPDATE, ("InsStr(%p, %p,%d) called", SP_PARM, line, count));
+    TR(TRACE_UPDATE, ("InsStr(%p, %p,%d) called",
+                     (void *) SP_PARM,
+                     (void *) line, count));
 
     /* Prefer parm_ich as it has the smallest cost - no need to shift
      * the whole line on each character. */
@@ -1680,7 +1689,7 @@ DelChar(NCURSES_SP_DCLx int count)
     int n;
 
     TR(TRACE_UPDATE, ("DelChar(%p, %d) called, position = (%ld,%ld)",
-                     SP_PARM, count,
+                     (void *) SP_PARM, count,
                      (long) NewScreen(SP_PARM)->_cury,
                      (long) NewScreen(SP_PARM)->_curx));
 
@@ -1937,7 +1946,8 @@ NCURSES_SP_NAME(_nc_scrolln) (NCURSES_SP_DCLx
     bool cursor_saved = FALSE;
     int res;
 
-    TR(TRACE_MOVE, ("_nc_scrolln(%p, %d, %d, %d, %d)", SP_PARM, n, top, bot, maxy));
+    TR(TRACE_MOVE, ("_nc_scrolln(%p, %d, %d, %d, %d)",
+                   (void *) SP_PARM, n, top, bot, maxy));
 
     if (!IsValidScreen(SP_PARM))
        return (ERR);
@@ -2056,7 +2066,10 @@ NCURSES_SP_NAME(_nc_scrolln) (NCURSES_SP_DCLx
     if (res == ERR)
        return (ERR);
 
-    _nc_scroll_window(CurScreen(SP_PARM), n, top, bot, blank);
+    _nc_scroll_window(CurScreen(SP_PARM), n,
+                     (NCURSES_SIZE_T) top,
+                     (NCURSES_SIZE_T) bot,
+                     blank);
 
     /* shift hash values too - they can be reused */
     NCURSES_SP_NAME(_nc_scroll_oldhash) (NCURSES_SP_ARGx n, top, bot);
@@ -2091,7 +2104,8 @@ NCURSES_SP_NAME(_nc_screen_resume) (NCURSES_SP_DCL0)
        SP_PARM->_color_defs = -(SP_PARM->_color_defs);
        for (n = 0; n < SP_PARM->_color_defs; ++n) {
            if (SP_PARM->_color_table[n].init) {
-               NCURSES_SP_NAME(init_color) (NCURSES_SP_ARGx n,
+               NCURSES_SP_NAME(init_color) (NCURSES_SP_ARGx
+                                            (short) n,
                                             SP_PARM->_color_table[n].r,
                                             SP_PARM->_color_table[n].g,
                                             SP_PARM->_color_table[n].b);
@@ -2161,11 +2175,11 @@ NCURSES_SP_NAME(_nc_screen_wrap) (NCURSES_SP_DCL0)
                                       NCURSES_SP_NAME(_nc_outch));
        SP_PARM->_default_color = FALSE;
 
-       NCURSES_SP_NAME(mvcur) (NCURSES_SP_ARGx
-                               SP_PARM->_cursrow,
-                               SP_PARM->_curscol,
-                               screen_lines(SP_PARM) - 1,
-                               0);
+       TINFO_MVCUR(NCURSES_SP_ARGx
+                   SP_PARM->_cursrow,
+                   SP_PARM->_curscol,
+                   screen_lines(SP_PARM) - 1,
+                   0);
 
        ClrToEOL(NCURSES_SP_ARGx blank, TRUE);
     }