svn commit: r317173 - head/sys/dev/vt

Jung-uk Kim jkim at FreeBSD.org
Wed Apr 19 22:41:25 UTC 2017


Author: jkim
Date: Wed Apr 19 22:41:24 2017
New Revision: 317173
URL: https://svnweb.freebsd.org/changeset/base/317173

Log:
  Always clear borders when the terminal is flushed.
  
  PR:		202288

Modified:
  head/sys/dev/vt/vt_core.c

Modified: head/sys/dev/vt/vt_core.c
==============================================================================
--- head/sys/dev/vt/vt_core.c	Wed Apr 19 22:27:26 2017	(r317172)
+++ head/sys/dev/vt/vt_core.c	Wed Apr 19 22:41:24 2017	(r317173)
@@ -1149,6 +1149,34 @@ vt_mark_mouse_position_as_dirty(struct v
 }
 #endif
 
+static void
+vt_set_border(struct vt_window *vw, term_color_t c)
+{
+	struct vt_device *vd = vw->vw_device;
+	term_rect_t *vda = &vw->vw_draw_area;
+	int x, y;
+
+	/* Top bar. */
+	for (y = 0; y < vda->tr_begin.tp_row; y++)
+		for (x = 0; x < vd->vd_width; x++)
+			vd->vd_driver->vd_setpixel(vd, x, y, c);
+
+	for (y = vda->tr_begin.tp_row; y <= vda->tr_end.tp_row; y++) {
+		/* Left bar. */
+		for (x = 0; x < vda->tr_begin.tp_col; x++)
+			vd->vd_driver->vd_setpixel(vd, x, y, c);
+
+		/* Right bar. */
+		for (x = vda->tr_end.tp_col + 1; x < vd->vd_width; x++)
+			vd->vd_driver->vd_setpixel(vd, x, y, c);
+	}
+
+	/* Bottom bar. */
+	for (y = vda->tr_end.tp_row + 1; y < vd->vd_height; y++)
+		for (x = 0; x < vd->vd_width; x++)
+			vd->vd_driver->vd_setpixel(vd, x, y, c);
+}
+
 static int
 vt_flush(struct vt_device *vd)
 {
@@ -1214,6 +1242,7 @@ vt_flush(struct vt_device *vd)
 	if (vd->vd_flags & VDF_INVALID) {
 		vd->vd_flags &= ~VDF_INVALID;
 
+		vt_set_border(vw, TC_BLACK);
 		vt_termrect(vd, vf, &tarea);
 		if (vt_draw_logo_cpus)
 			vtterm_draw_cpu_logos(vd);
@@ -1528,34 +1557,6 @@ vtterm_opened(struct terminal *tm, int o
 	VT_UNLOCK(vd);
 }
 
-static void
-vt_set_border(struct vt_window *vw, term_color_t c)
-{
-	struct vt_device *vd = vw->vw_device;
-	term_rect_t *vda = &vw->vw_draw_area;
-	int x, y;
-
-	/* Top bar. */
-	for (y = 0; y < vda->tr_begin.tp_row; y++)
-		for (x = 0; x < vd->vd_width; x++)
-			vd->vd_driver->vd_setpixel(vd, x, y, c);
-
-	for (y = vda->tr_begin.tp_row; y <= vda->tr_end.tp_row; y++) {
-		/* Left bar. */
-		for (x = 0; x < vda->tr_begin.tp_col; x++)
-			vd->vd_driver->vd_setpixel(vd, x, y, c);
-
-		/* Right bar. */
-		for (x = vda->tr_end.tp_col + 1; x < vd->vd_width; x++)
-			vd->vd_driver->vd_setpixel(vd, x, y, c);
-	}
-
-	/* Bottom bar. */
-	for (y = vda->tr_end.tp_row + 1; y < vd->vd_height; y++)
-		for (x = 0; x < vd->vd_width; x++)
-			vd->vd_driver->vd_setpixel(vd, x, y, c);
-}
-
 static int
 vt_change_font(struct vt_window *vw, struct vt_font *vf)
 {
@@ -1621,7 +1622,6 @@ vt_change_font(struct vt_window *vw, str
 
 	/* Force a full redraw the next timer tick. */
 	if (vd->vd_curwindow == vw) {
-		vt_set_border(vw, TC_BLACK);
 		vd->vd_flags |= VDF_INVALID;
 		vt_resume_flush_timer(vw->vw_device, 0);
 	}


More information about the svn-src-head mailing list