Author: jkim Date: Wed Apr 19 22:21:15 2017 New Revision: 317171 URL: https://svnweb.freebsd.org/changeset/base/317171
Log: Micro-optimize vt_set_border(). 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:20:41 2017 (r317170) +++ head/sys/dev/vt/vt_core.c Wed Apr 19 22:21:15 2017 (r317171) @@ -1528,43 +1528,32 @@ vtterm_opened(struct terminal *tm, int o VT_UNLOCK(vd); } -static int +static void vt_set_border(struct vt_window *vw, term_color_t c) { struct vt_device *vd = vw->vw_device; - - if (vd->vd_driver->vd_drawrect == NULL) - return (ENOTSUP); + term_rect_t *vda = &vw->vw_draw_area; + int x, y; /* Top bar. */ - if (vw->vw_draw_area.tr_begin.tp_row > 0) - vd->vd_driver->vd_drawrect(vd, - 0, 0, - vd->vd_width - 1, vw->vw_draw_area.tr_begin.tp_row - 1, - 1, c); - - /* Left bar. */ - if (vw->vw_draw_area.tr_begin.tp_col > 0) - vd->vd_driver->vd_drawrect(vd, - 0, 0, - vw->vw_draw_area.tr_begin.tp_col - 1, vd->vd_height - 1, - 1, c); - - /* Right bar. */ - if (vw->vw_draw_area.tr_end.tp_col < vd->vd_width) - vd->vd_driver->vd_drawrect(vd, - vw->vw_draw_area.tr_end.tp_col - 1, 0, - vd->vd_width - 1, vd->vd_height - 1, - 1, c); + 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. */ - if (vw->vw_draw_area.tr_end.tp_row < vd->vd_height) - vd->vd_driver->vd_drawrect(vd, - 0, vw->vw_draw_area.tr_end.tp_row - 1, - vd->vd_width - 1, vd->vd_height - 1, - 1, c); - - return (0); + 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 _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"