Module Name:    src
Committed By:   blymn
Date:           Tue May  3 07:25:34 UTC 2022

Modified Files:
        src/lib/libcurses: add_wchstr.c addbytes.c background.c border.c
            clrtobot.c curses.c curses_private.h delch.c erase.c newwin.c
            refresh.c

Log Message:
 * Don't redraw the background if the new background character is the
   same as the old one.  This prevents excessive redraws in some
   applications.

 * Fix bug introduced when wbkgrndset was fixed, we cannot blindly
   replace any instance of the old background character with the new one
   because some of those characters were put there by the application
   leading to display corruption.  So flag characters as background when
   they are erased and only update the flagged characters when setting
   the background.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/lib/libcurses/add_wchstr.c
cvs rdiff -u -r1.62 -r1.63 src/lib/libcurses/addbytes.c
cvs rdiff -u -r1.30 -r1.31 src/lib/libcurses/background.c
cvs rdiff -u -r1.23 -r1.24 src/lib/libcurses/border.c
cvs rdiff -u -r1.29 -r1.30 src/lib/libcurses/clrtobot.c \
    src/lib/libcurses/curses.c
cvs rdiff -u -r1.79 -r1.80 src/lib/libcurses/curses_private.h
cvs rdiff -u -r1.28 -r1.29 src/lib/libcurses/delch.c
cvs rdiff -u -r1.35 -r1.36 src/lib/libcurses/erase.c
cvs rdiff -u -r1.66 -r1.67 src/lib/libcurses/newwin.c
cvs rdiff -u -r1.122 -r1.123 src/lib/libcurses/refresh.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libcurses/add_wchstr.c
diff -u src/lib/libcurses/add_wchstr.c:1.12 src/lib/libcurses/add_wchstr.c:1.13
--- src/lib/libcurses/add_wchstr.c:1.12	Tue Apr 12 07:03:04 2022
+++ src/lib/libcurses/add_wchstr.c	Tue May  3 07:25:34 2022
@@ -1,4 +1,4 @@
-/*   $NetBSD: add_wchstr.c,v 1.12 2022/04/12 07:03:04 blymn Exp $ */
+/*   $NetBSD: add_wchstr.c,v 1.13 2022/05/03 07:25:34 blymn Exp $ */
 
 /*
  * Copyright (c) 2005 The NetBSD Foundation Inc.
@@ -36,7 +36,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: add_wchstr.c,v 1.12 2022/04/12 07:03:04 blymn Exp $");
+__RCSID("$NetBSD: add_wchstr.c,v 1.13 2022/05/03 07:25:34 blymn Exp $");
 #endif				/* not lint */
 
 #include <stdlib.h>
@@ -210,6 +210,7 @@ wadd_wchnstr(WINDOW *win, const cchar_t 
 					    == ERR)
 						return ERR;
 					lp->attr = win->battr;
+					lp->cflags |= CA_BACKGROUND;
 					(*lp).wcols = 1;
 					lp++, ex++;
 				}
@@ -229,6 +230,7 @@ wadd_wchnstr(WINDOW *win, const cchar_t 
 			}
 			lp->ch = chp->vals[0];
 			lp->attr = chp->attributes & WA_ATTRIBUTES;
+			lp->cflags &= ~CA_BACKGROUND;
 			(*lp).wcols = cw;
 			if (chp->elements > 1) {
 				for (i = 1; i < chp->elements; i++) {

Index: src/lib/libcurses/addbytes.c
diff -u src/lib/libcurses/addbytes.c:1.62 src/lib/libcurses/addbytes.c:1.63
--- src/lib/libcurses/addbytes.c:1.62	Tue Apr 12 07:03:04 2022
+++ src/lib/libcurses/addbytes.c	Tue May  3 07:25:34 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: addbytes.c,v 1.62 2022/04/12 07:03:04 blymn Exp $	*/
+/*	$NetBSD: addbytes.c,v 1.63 2022/05/03 07:25:34 blymn Exp $	*/
 
 /*
  * Copyright (c) 1987, 1993, 1994
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)addbytes.c	8.4 (Berkeley) 5/4/94";
 #else
-__RCSID("$NetBSD: addbytes.c,v 1.62 2022/04/12 07:03:04 blymn Exp $");
+__RCSID("$NetBSD: addbytes.c,v 1.63 2022/05/03 07:25:34 blymn Exp $");
 #endif
 #endif				/* not lint */
 
@@ -311,6 +311,8 @@ _cursesi_addbyte(WINDOW *win, __LINE **l
 #endif
 	}
 
+	(*lp)->line[*x].cflags &= ~ CA_BACKGROUND;
+
 	if (attributes & __COLOR)
 		(*lp)->line[*x].attr =
 			attributes | (win->battr & ~__COLOR);
@@ -449,6 +451,7 @@ _cursesi_addwchar(WINDOW *win, __LINE **
 			    *y, sx);
 			tp = &win->alines[*y]->line[sx];
 			tp->ch = win->bch;
+			tp->cflags |= CA_BACKGROUND;
 			if (_cursesi_copy_nsp(win->bnsp, tp) == ERR)
 				return ERR;
 
@@ -513,6 +516,7 @@ _cursesi_addwchar(WINDOW *win, __LINE **
 	}
 
 	lp->ch = wch->vals[0];
+	lp->cflags &= ~CA_BACKGROUND;
 
 	attributes = (win->wattr | wch->attributes)
 		& (WA_ATTRIBUTES & ~__COLOR);
@@ -559,7 +563,7 @@ _cursesi_addwchar(WINDOW *win, __LINE **
 		tp->ch = wch->vals[0];
 		tp->attr = lp->attr & WA_ATTRIBUTES;
 		/* Mark as "continuation" cell */
-		tp->wflags |= WCA_CONTINUATION;
+		tp->cflags |= CA_CONTINUATION;
 	}
 
 
@@ -596,6 +600,7 @@ _cursesi_addwchar(WINDOW *win, __LINE **
 				    "remaining of current char (%d,%d)nn",
 				    *y, ex);
 				tp->ch = win->bch;
+				tp->cflags |= CA_BACKGROUND;
 				if (_cursesi_copy_nsp(win->bnsp, tp) == ERR)
 					return ERR;
 				tp->attr = win->battr;

Index: src/lib/libcurses/background.c
diff -u src/lib/libcurses/background.c:1.30 src/lib/libcurses/background.c:1.31
--- src/lib/libcurses/background.c:1.30	Tue Apr 19 22:26:57 2022
+++ src/lib/libcurses/background.c	Tue May  3 07:25:34 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: background.c,v 1.30 2022/04/19 22:26:57 blymn Exp $	*/
+/*	$NetBSD: background.c,v 1.31 2022/05/03 07:25:34 blymn Exp $	*/
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: background.c,v 1.30 2022/04/19 22:26:57 blymn Exp $");
+__RCSID("$NetBSD: background.c,v 1.31 2022/05/03 07:25:34 blymn Exp $");
 #endif				/* not lint */
 
 #include <stdlib.h>
@@ -87,12 +87,10 @@ wbkgdset(WINDOW *win, chtype ch)
 int
 wbkgd(WINDOW *win, chtype ch)
 {
-	chtype obch;
 	int y, x;
 
 	__CTRACE(__CTRACE_ATTR, "wbkgd: (%p), '%s', %08x\n",
 	    win, unctrl(ch & __CHARTEXT), ch & __ATTRIBUTES);
-	obch = win->bch;
 	wbkgdset(win, ch);
 
 	for (y = 0; y < win->maxy; y++) {
@@ -100,7 +98,7 @@ wbkgd(WINDOW *win, chtype ch)
 			__LDATA *cp = &win->alines[y]->line[x];
 
 			/* Update/switch background characters */
-			if (cp->ch == obch)
+			if (cp->cflags & CA_BACKGROUND)
 				cp->ch = win->bch;
 
 			/* Update/merge attributes */
@@ -174,7 +172,7 @@ wbkgrndset(WINDOW *win, const cchar_t *w
 	/* get a copy of the old background, we will need it. */
 	obkgrnd.ch = win->bch;
 	obkgrnd.attr = win->battr;
-	obkgrnd.wflags = 0;
+	obkgrnd.cflags |= CA_BACKGROUND;
 	obkgrnd.wcols = win->wcols;
 	obkgrnd.nsp = NULL;
 	_cursesi_copy_nsp(win->bnsp, &obkgrnd);
@@ -223,22 +221,26 @@ wbkgrndset(WINDOW *win, const cchar_t *w
 	win->battr = battr;
 	win->wcols = 1;
 
-	/*
-	 * Now do the dirty work of updating all the locations
-	 * that have the old background character with the new.
-	 */
-
 	nbkgrnd.ch = win->bch;
 	nbkgrnd.attr = win->battr;
-	nbkgrnd.wflags = 0;
+	nbkgrnd.cflags |= CA_BACKGROUND;
 	nbkgrnd.wcols = win->wcols;
 	nbkgrnd.nsp = NULL;
 	_cursesi_copy_nsp(win->bnsp, &nbkgrnd);
 
+	/* if the background is already this char then skip updating */
+	if (_cursesi_celleq(&obkgrnd, &nbkgrnd))
+		return;
+
+	/*
+	 * Now do the dirty work of updating all the locations
+	 * that have the old background character with the new.
+	 */
+
 	for (wy = 0; wy < win->maxy; wy++) {
 		wlp = win->alines[wy];
 		for (wx = 0; wx < win->maxx; wx++) {
-			if (_cursesi_celleq(&obkgrnd, &wlp->line[wx])) {
+			if (wlp->line[wx].cflags & CA_BACKGROUND) {
 				_cursesi_copy_wchar(&nbkgrnd, &wlp->line[wx]);
 			}
 		}

Index: src/lib/libcurses/border.c
diff -u src/lib/libcurses/border.c:1.23 src/lib/libcurses/border.c:1.24
--- src/lib/libcurses/border.c:1.23	Tue Apr 12 07:03:04 2022
+++ src/lib/libcurses/border.c	Tue May  3 07:25:34 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: border.c,v 1.23 2022/04/12 07:03:04 blymn Exp $	*/
+/*	$NetBSD: border.c,v 1.24 2022/05/03 07:25:34 blymn Exp $	*/
 
 /*
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: border.c,v 1.23 2022/04/12 07:03:04 blymn Exp $");
+__RCSID("$NetBSD: border.c,v 1.24 2022/05/03 07:25:34 blymn Exp $");
 #endif				/* not lint */
 
 #include <stdlib.h>
@@ -301,6 +301,7 @@ int wborder_set(WINDOW *win, const cchar
 			cw = 1;
 		for ( j = 0; j < cw; j++ ) {
 			win->alines[i]->line[j].ch = left.vals[0];
+			win->alines[i]->line[j].cflags &= ~CA_BACKGROUND;
 			win->alines[i]->line[j].attr = left.attributes;
 			np = win->alines[i]->line[j].nsp;
 			if (np) {
@@ -332,6 +333,7 @@ int wborder_set(WINDOW *win, const cchar
 			__CTRACE(__CTRACE_INPUT,
 			    "wborder_set: clean out partial char[%d]", j);
 			win->alines[i]->line[j].ch = win->bch;
+			win->alines[i]->line[j].cflags |= CA_BACKGROUND;
 			if (_cursesi_copy_nsp(win->bnsp,
 					      &win->alines[i]->line[j]) == ERR)
 				return ERR;
@@ -344,6 +346,7 @@ int wborder_set(WINDOW *win, const cchar
 		pcw = win->alines[i]->line[endx - cw].wcols;
 		for ( j = endx - cw + 1; j <= endx; j++ ) {
 			win->alines[i]->line[j].ch = right.vals[0];
+			win->alines[i]->line[j].cflags &= ~CA_BACKGROUND;
 			win->alines[i]->line[j].attr = right.attributes;
 			np = win->alines[i]->line[j].nsp;
 			if (np) {
@@ -378,6 +381,7 @@ int wborder_set(WINDOW *win, const cchar
 			k = pcw < 0 ? endx -cw + pcw : endx - cw;
 			for (j = endx - cw; j >= k; j--) {
 				win->alines[i]->line[j].ch = win->bch;
+				win->alines[i]->line[j].cflags |= CA_BACKGROUND;
 				if (_cursesi_copy_nsp(win->bnsp,
 					       &win->alines[i]->line[j]) == ERR)
 					return ERR;
@@ -405,6 +409,7 @@ int wborder_set(WINDOW *win, const cchar
 	for (i = tlcw; i <= min( endx - cw, endx - trcw); i += cw) {
 		for (j = 0; j < cw; j++) {
 			win->alines[0]->line[i + j].ch = top.vals[0];
+			win->alines[0]->line[i + j].cflags &= ~CA_BACKGROUND;
 			win->alines[0]->line[i + j].attr = top.attributes;
 			np = win->alines[0]->line[i + j].nsp;
 			if (np) {
@@ -435,6 +440,7 @@ int wborder_set(WINDOW *win, const cchar
 	}
 	while (i <= endx - trcw) {
 		win->alines[0]->line[i].ch = win->bch;
+		win->alines[0]->line[i].cflags |= CA_BACKGROUND;
 		if (_cursesi_copy_nsp(win->bnsp,
 				      &win->alines[0]->line[i]) == ERR)
 			return ERR;
@@ -446,6 +452,7 @@ int wborder_set(WINDOW *win, const cchar
 	for (i = blcw; i <= min( endx - cw, endx - brcw); i += cw) {
 		for (j = 0; j < cw; j++) {
 			win->alines[endy]->line[i + j].ch = bottom.vals[0];
+			win->alines[endy]->line[i + j].cflags &= ~CA_BACKGROUND;
 			win->alines[endy]->line[i + j].attr = bottom.attributes;
 			np = win->alines[endy]->line[i + j].nsp;
 			if (np) {
@@ -475,6 +482,7 @@ int wborder_set(WINDOW *win, const cchar
 	}
 	while (i <= endx - brcw) {
 		win->alines[endy]->line[i].ch = win->bch;
+		win->alines[endy]->line[i].cflags |= CA_BACKGROUND;
 		if (_cursesi_copy_nsp(win->bnsp,
 				      &win->alines[endy]->line[i]) == ERR)
 			return ERR;
@@ -488,6 +496,7 @@ int wborder_set(WINDOW *win, const cchar
 		(win->flags & __SCROLLOK) && (win->flags & __SCROLLWIN))) {
 		for (i = 0; i < tlcw; i++) {
 			win->alines[0]->line[i].ch = topleft.vals[0];
+			win->alines[0]->line[i].cflags &= ~CA_BACKGROUND;
 			win->alines[0]->line[i].attr = topleft.attributes;
 			np = win->alines[0]->line[i].nsp;
 			if (np) {
@@ -517,6 +526,7 @@ int wborder_set(WINDOW *win, const cchar
 		}
 		for (i = endx - trcw + 1; i <= endx; i++) {
 			win->alines[0]->line[i].ch = topright.vals[0];
+			win->alines[0]->line[i].cflags &= ~CA_BACKGROUND;
 			win->alines[0]->line[i].attr = topright.attributes;
 			np = win->alines[0]->line[i].nsp;
 			if (np) {
@@ -546,6 +556,7 @@ int wborder_set(WINDOW *win, const cchar
 		}
 		for (i = 0; i < blcw; i++) {
 			win->alines[endy]->line[i].ch = botleft.vals[0];
+			win->alines[endy]->line[i].cflags &= ~CA_BACKGROUND;
 			win->alines[endy]->line[i].attr = botleft.attributes;
 			np = win->alines[ endy ]->line[i].nsp;
 			if (np) {
@@ -574,6 +585,7 @@ int wborder_set(WINDOW *win, const cchar
 		}
 		for (i = endx - brcw + 1; i <= endx; i++) {
 			win->alines[endy]->line[i].ch = botright.vals[0];
+			win->alines[endy]->line[i].cflags &= ~CA_BACKGROUND;
 			win->alines[endy]->line[i].attr = botright.attributes;
 			np = win->alines[endy]->line[i].nsp;
 			if (np) {

Index: src/lib/libcurses/clrtobot.c
diff -u src/lib/libcurses/clrtobot.c:1.29 src/lib/libcurses/clrtobot.c:1.30
--- src/lib/libcurses/clrtobot.c:1.29	Tue Apr 12 07:03:04 2022
+++ src/lib/libcurses/clrtobot.c	Tue May  3 07:25:34 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: clrtobot.c,v 1.29 2022/04/12 07:03:04 blymn Exp $	*/
+/*	$NetBSD: clrtobot.c,v 1.30 2022/05/03 07:25:34 blymn Exp $	*/
 
 /*
  * Copyright (c) 1981, 1993, 1994
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)clrtobot.c	8.2 (Berkeley) 5/4/94";
 #else
-__RCSID("$NetBSD: clrtobot.c,v 1.29 2022/04/12 07:03:04 blymn Exp $");
+__RCSID("$NetBSD: clrtobot.c,v 1.30 2022/05/03 07:25:34 blymn Exp $");
 #endif
 #endif				/* not lint */
 
@@ -97,6 +97,7 @@ wclrtobot(WINDOW *win)
 				minx = (int)(sp - win->alines[y]->line);
 
 			sp->ch = bch;
+			sp->cflags |= CA_BACKGROUND;
 			sp->attr = battr | (sp->attr & __ALTCHARSET);
 #ifdef HAVE_WCHAR
 			if (_cursesi_copy_nsp(win->bnsp, sp) == ERR)
Index: src/lib/libcurses/curses.c
diff -u src/lib/libcurses/curses.c:1.29 src/lib/libcurses/curses.c:1.30
--- src/lib/libcurses/curses.c:1.29	Tue Apr 19 22:26:57 2022
+++ src/lib/libcurses/curses.c	Tue May  3 07:25:34 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: curses.c,v 1.29 2022/04/19 22:26:57 blymn Exp $	*/
+/*	$NetBSD: curses.c,v 1.30 2022/05/03 07:25:34 blymn Exp $	*/
 
 /*
  * Copyright (c) 1981, 1993, 1994
@@ -35,7 +35,7 @@
 #if 0
 static char sccsid[] = "@(#)curses.c	8.3 (Berkeley) 5/4/94";
 #else
-__RCSID("$NetBSD: curses.c,v 1.29 2022/04/19 22:26:57 blymn Exp $");
+__RCSID("$NetBSD: curses.c,v 1.30 2022/05/03 07:25:34 blymn Exp $");
 #endif
 #endif				/* not lint */
 
@@ -121,7 +121,7 @@ _cursesi_copy_wchar(__LDATA *src, __LDAT
 {
 	dest->ch = src->ch;
 	dest->attr = src->attr;
-	dest->wflags = src->wflags;
+	dest->cflags = src->cflags;
 	dest->wcols = src->wcols;
 	_cursesi_copy_nsp(src->nsp, dest);
 }

Index: src/lib/libcurses/curses_private.h
diff -u src/lib/libcurses/curses_private.h:1.79 src/lib/libcurses/curses_private.h:1.80
--- src/lib/libcurses/curses_private.h:1.79	Tue Apr 19 22:26:57 2022
+++ src/lib/libcurses/curses_private.h	Tue May  3 07:25:34 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: curses_private.h,v 1.79 2022/04/19 22:26:57 blymn Exp $	*/
+/*	$NetBSD: curses_private.h,v 1.80 2022/05/03 07:25:34 blymn Exp $	*/
 
 /*-
  * Copyright (c) 1998-2000 Brett Lymn
@@ -70,10 +70,11 @@ typedef struct nschar_t {
 struct __ldata {
 	wchar_t	ch;			/* Character */
 	attr_t	attr;			/* Attributes */
+#define CA_CONTINUATION		0x0001	/* a continuation cell */
+#define CA_BACKGROUND		0x0002	/* background char */
+	int16_t		cflags;		/* internal attributes for wide char */
 #ifdef HAVE_WCHAR
 	nschar_t	*nsp;	/* Foreground non-spacing character pointer */
-#define WCA_CONTINUATION	0x0001	/* a continuation cell */
-	int16_t		wflags;		/* internal attributes for wide char */
 	int16_t		wcols;		/* display width of a wide char */
 #endif /* HAVE_WCHAR */
 };
@@ -332,6 +333,7 @@ void	 __CTRACE(int, const char *, ...) _
 #ifdef HAVE_WCHAR
 #define __NEED_ERASE(_sp, _bch, _battr)				\
 	((_sp)->ch != (_bch) ||					\
+	(((_sp)->cflags & CA_BACKGROUND) != CA_BACKGROUND) ||	\
 	    ((_sp)->attr & WA_ATTRIBUTES) != (_battr) ||	\
 	    (_sp)->nsp != NULL ||				\
 	    (_sp)->wcols < 0)

Index: src/lib/libcurses/delch.c
diff -u src/lib/libcurses/delch.c:1.28 src/lib/libcurses/delch.c:1.29
--- src/lib/libcurses/delch.c:1.28	Tue Apr 12 07:03:04 2022
+++ src/lib/libcurses/delch.c	Tue May  3 07:25:34 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: delch.c,v 1.28 2022/04/12 07:03:04 blymn Exp $	*/
+/*	$NetBSD: delch.c,v 1.29 2022/05/03 07:25:34 blymn Exp $	*/
 
 /*
  * Copyright (c) 1981, 1993, 1994
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)delch.c	8.2 (Berkeley) 5/4/94";
 #else
-__RCSID("$NetBSD: delch.c,v 1.28 2022/04/12 07:03:04 blymn Exp $");
+__RCSID("$NetBSD: delch.c,v 1.29 2022/05/03 07:25:34 blymn Exp $");
 #endif
 #endif				/* not lint */
 
@@ -98,6 +98,7 @@ wdelch(WINDOW *win)
 		temp1++, temp2++;
 	}
 	temp1->ch = win->bch;
+	temp1->cflags |= CA_BACKGROUND;
 	if (__using_color && win != curscr)
 		temp1->attr = win->battr & __COLOR;
 	else
@@ -135,7 +136,8 @@ wdelch(WINDOW *win)
 	}
 	while (temp1 <= end) {
 		temp1->ch = win->bch;
-		temp1->attr = 0;
+		temp1->cflags |= CA_BACKGROUND;
+		temp1->attr = win->battr;
 		if (_cursesi_copy_nsp(win->bnsp, temp1) == ERR)
 			return ERR;
 		temp1->wcols = 1;

Index: src/lib/libcurses/erase.c
diff -u src/lib/libcurses/erase.c:1.35 src/lib/libcurses/erase.c:1.36
--- src/lib/libcurses/erase.c:1.35	Tue Apr 12 07:03:04 2022
+++ src/lib/libcurses/erase.c	Tue May  3 07:25:34 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: erase.c,v 1.35 2022/04/12 07:03:04 blymn Exp $	*/
+/*	$NetBSD: erase.c,v 1.36 2022/05/03 07:25:34 blymn Exp $	*/
 
 /*
  * Copyright (c) 1981, 1993, 1994
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)erase.c	8.2 (Berkeley) 5/4/94";
 #else
-__RCSID("$NetBSD: erase.c,v 1.35 2022/04/12 07:03:04 blymn Exp $");
+__RCSID("$NetBSD: erase.c,v 1.36 2022/05/03 07:25:34 blymn Exp $");
 #endif
 #endif				/* not lint */
 
@@ -85,6 +85,7 @@ werase(WINDOW *win)
 				continue;
 
 			sp->ch = bch;
+			sp->cflags |= CA_BACKGROUND;
 			sp->attr = battr | (sp->attr & __ALTCHARSET);
 #ifdef HAVE_WCHAR
 			if (_cursesi_copy_nsp(win->bnsp, sp) == ERR)

Index: src/lib/libcurses/newwin.c
diff -u src/lib/libcurses/newwin.c:1.66 src/lib/libcurses/newwin.c:1.67
--- src/lib/libcurses/newwin.c:1.66	Tue Apr 12 07:03:04 2022
+++ src/lib/libcurses/newwin.c	Tue May  3 07:25:34 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: newwin.c,v 1.66 2022/04/12 07:03:04 blymn Exp $	*/
+/*	$NetBSD: newwin.c,v 1.67 2022/05/03 07:25:34 blymn Exp $	*/
 
 /*
  * Copyright (c) 1981, 1993, 1994
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)newwin.c	8.3 (Berkeley) 7/27/94";
 #else
-__RCSID("$NetBSD: newwin.c,v 1.66 2022/04/12 07:03:04 blymn Exp $");
+__RCSID("$NetBSD: newwin.c,v 1.67 2022/05/03 07:25:34 blymn Exp $");
 #endif
 #endif				/* not lint */
 
@@ -166,6 +166,7 @@ __newwin(SCREEN *screen, int nlines, int
 			lp->flags = 0;
 		for (sp = lp->line, j = 0; j < maxx; j++, sp++) {
 			sp->attr = 0;
+			sp->cflags = CA_BACKGROUND;
 			sp->ch = win->bch;
 #ifdef HAVE_WCHAR
 			sp->nsp = NULL;

Index: src/lib/libcurses/refresh.c
diff -u src/lib/libcurses/refresh.c:1.122 src/lib/libcurses/refresh.c:1.123
--- src/lib/libcurses/refresh.c:1.122	Tue Apr 19 22:26:57 2022
+++ src/lib/libcurses/refresh.c	Tue May  3 07:25:34 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: refresh.c,v 1.122 2022/04/19 22:26:57 blymn Exp $	*/
+/*	$NetBSD: refresh.c,v 1.123 2022/05/03 07:25:34 blymn Exp $	*/
 
 /*
  * Copyright (c) 1981, 1993, 1994
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)refresh.c	8.7 (Berkeley) 8/13/94";
 #else
-__RCSID("$NetBSD: refresh.c,v 1.122 2022/04/19 22:26:57 blymn Exp $");
+__RCSID("$NetBSD: refresh.c,v 1.123 2022/05/03 07:25:34 blymn Exp $");
 #endif
 #endif				/* not lint */
 
@@ -1183,7 +1183,7 @@ makech(int wy)
 		}
 
 #ifdef HAVE_WCHAR
-		if ((cp->wflags & WCA_CONTINUATION) == WCA_CONTINUATION)
+		if ((cp->cflags & CA_CONTINUATION) == CA_CONTINUATION)
 			cp--;
 #endif /* HAVE_WCHAR */
 
@@ -1198,8 +1198,8 @@ makech(int wy)
 	while (wx <= lch) {
 		__CTRACE(__CTRACE_REFRESH, "makech: wx=%d,lch=%d\n", wx, lch);
 #ifdef HAVE_WCHAR
-		__CTRACE(__CTRACE_REFRESH, "makech: farnarkle: flags 0x%x, wflags 0x%x, color_init %d, celleq %d\n",
-			wlp->flags, nsp->wflags, __do_color_init, _cursesi_celleq(nsp, csp));
+		__CTRACE(__CTRACE_REFRESH, "makech: farnarkle: flags 0x%x, cflags 0x%x, color_init %d, celleq %d\n",
+			wlp->flags, nsp->cflags, __do_color_init, _cursesi_celleq(nsp, csp));
 		__CTRACE(__CTRACE_REFRESH, "makech: nsp=(%x,%x,%d,%x,%x,%d,%p)\n",
 			nsp->ch, nsp->attr, nsp->wcols, win->bch, win->battr,
 			win->wcols, nsp->nsp);
@@ -1209,7 +1209,7 @@ makech(int wy)
 #endif
 		if (!(wlp->flags & __ISFORCED) &&
 #ifdef HAVE_WCHAR
-		    ((nsp->wflags & WCA_CONTINUATION) != WCA_CONTINUATION) &&
+		    ((nsp->cflags & CA_CONTINUATION) != CA_CONTINUATION) &&
 #endif
 		    _cursesi_celleq(nsp, csp))
 		{

Reply via email to