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