Module Name: src Committed By: rin Date: Wed Jul 31 14:29:54 UTC 2019
Modified Files: src/sys/dev/wscons: wsdisplay_vcons.c Log Message: When font is switched, not only putchar, but also other ri_ops can be changed by backend driver, e.g., see rasops1.c: https://nxr.netbsd.org/xref/src/sys/dev/rasops/rasops1.c#58 To generate a diff of this commit: cvs rdiff -u -r1.39 -r1.40 src/sys/dev/wscons/wsdisplay_vcons.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/wscons/wsdisplay_vcons.c diff -u src/sys/dev/wscons/wsdisplay_vcons.c:1.39 src/sys/dev/wscons/wsdisplay_vcons.c:1.40 --- src/sys/dev/wscons/wsdisplay_vcons.c:1.39 Sat Dec 1 00:28:45 2018 +++ src/sys/dev/wscons/wsdisplay_vcons.c Wed Jul 31 14:29:54 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: wsdisplay_vcons.c,v 1.39 2018/12/01 00:28:45 msaitoh Exp $ */ +/* $NetBSD: wsdisplay_vcons.c,v 1.40 2019/07/31 14:29:54 rin Exp $ */ /*- * Copyright (c) 2005, 2006 Michael Lorenz @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: wsdisplay_vcons.c,v 1.39 2018/12/01 00:28:45 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: wsdisplay_vcons.c,v 1.40 2019/07/31 14:29:54 rin Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -430,8 +430,23 @@ vcons_load_font(void *v, void *cookie, s /* allocate new buffers */ vcons_alloc_buffers(vd, scr); - /* save the potentially changed putchar */ + /* save the potentially changed ri_ops */ + vd->eraserows = ri->ri_ops.eraserows; + vd->erasecols = ri->ri_ops.erasecols; scr->putchar = ri->ri_ops.putchar; + vd->cursor = ri->ri_ops.cursor; + + if (scr->scr_flags & VCONS_NO_COPYCOLS) { + vd->copycols = vcons_copycols_noread; + } else { + vd->copycols = ri->ri_ops.copycols; + } + + if (scr->scr_flags & VCONS_NO_COPYROWS) { + vd->copyrows = vcons_copyrows_noread; + } else { + vd->copyrows = ri->ri_ops.copyrows; + } /* and put our wrappers back */ ri->ri_ops.eraserows = vcons_eraserows;