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;	

Reply via email to