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

Aleksandr Rybalko ray at FreeBSD.org
Thu Feb 6 15:16:39 UTC 2014


Author: ray
Date: Thu Feb  6 15:16:38 2014
New Revision: 261553
URL: http://svnweb.freebsd.org/changeset/base/261553

Log:
  Add vt_set_border function to help to change border color.
  Use vt_set_border to reset color after font changed (different font size may
  change border sizes)
  
  Sponsored by:	The FreeBSD Foundation

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

Modified: head/sys/dev/vt/vt_core.c
==============================================================================
--- head/sys/dev/vt/vt_core.c	Thu Feb  6 15:12:44 2014	(r261552)
+++ head/sys/dev/vt/vt_core.c	Thu Feb  6 15:16:38 2014	(r261553)
@@ -1045,6 +1045,30 @@ vt_change_font(struct vt_window *vw, str
 }
 
 static int
+vt_set_border(struct vt_window *vw, struct vt_font *vf, term_color_t c)
+{
+	struct vt_device *vd = vw->vw_device;
+	int l, r, t, b, w, h;
+
+	if (vd->vd_driver->vd_drawrect == NULL)
+		return (ENOTSUP);
+
+	w = vd->vd_width - 1;
+	h = vd->vd_height - 1;
+	l = vd->vd_offset.tp_col - 1;
+	r = w - l;
+	t = vd->vd_offset.tp_row - 1;
+	b = h - t;
+
+	vd->vd_driver->vd_drawrect(vd, 0, 0, w, t, 1, c); /* Top bar. */
+	vd->vd_driver->vd_drawrect(vd, 0, t, l, b, 1, c); /* Left bar. */
+	vd->vd_driver->vd_drawrect(vd, r, t, w, b, 1, c); /* Right bar. */
+	vd->vd_driver->vd_drawrect(vd, 0, b, w, h, 1, c); /* Bottom bar. */
+
+	return (0);
+}
+
+static int
 vt_proc_alive(struct vt_window *vw)
 {
 	struct proc *p;
@@ -1562,6 +1586,10 @@ skip_thunk:
 			return (error);
 
 		error = vt_change_font(vw, vf);
+		if (error == 0) {
+			/* XXX: replace 0 with current bg color. */
+			vt_set_border(vw, vf, 0);
+		}
 		vtfont_unref(vf);
 		return (error);
 	}


More information about the svn-src-all mailing list