diff options
author | Jean-Sébastien Pédron <dumbbell@FreeBSD.org> | 2014-08-25 19:06:31 +0000 |
---|---|---|
committer | Jean-Sébastien Pédron <dumbbell@FreeBSD.org> | 2014-08-25 19:06:31 +0000 |
commit | 83fbb296a95b450d60da76991abc288208fa4f6d (patch) | |
tree | 7b2b23dc301451432b594c056eba51ee37e7cb8e /sys/dev/fb | |
parent | 7e802e496821085fb0bd0dbf378f70c6270aa68a (diff) | |
download | src-83fbb296a95b450d60da76991abc288208fa4f6d.tar.gz src-83fbb296a95b450d60da76991abc288208fa4f6d.zip |
vt(4): Store a rectangle for the drawable area, not just the top-left corner
This allows backends to verify they do not draw outside of this area.
This fixes a bug in vt_vga where the text was happily drawn over the
right and bottom margins, when using the Gallant font.
MFC after: 1 week
Notes
Notes:
svn path=/head/; revision=270613
Diffstat (limited to 'sys/dev/fb')
-rw-r--r-- | sys/dev/fb/creator_vt.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/sys/dev/fb/creator_vt.c b/sys/dev/fb/creator_vt.c index 6bed29d7f984..18a42b937b69 100644 --- a/sys/dev/fb/creator_vt.c +++ b/sys/dev/fb/creator_vt.c @@ -236,8 +236,10 @@ creatorfb_bitblt_text(struct vt_device *vd, const struct vt_window *vw, for (row = area->tr_begin.tp_row; row < area->tr_end.tp_row; ++row) { for (col = area->tr_begin.tp_col; col < area->tr_end.tp_col; ++col) { - x = col * vf->vf_width + vw->vw_offset.tp_col; - y = row * vf->vf_height + vw->vw_offset.tp_row; + x = col * vf->vf_width + + vw->vw_draw_area.tr_begin.tp_col; + y = row * vf->vf_height + + vw->vw_draw_area.tr_begin.tp_row; c = VTBUF_GET_FIELD(&vw->vw_buf, row, col); pattern = vtfont_lookup(vf, c); @@ -257,13 +259,13 @@ creatorfb_bitblt_text(struct vt_device *vd, const struct vt_window *vw, term_rect_t drawn_area; drawn_area.tr_begin.tp_col = area->tr_begin.tp_col * vf->vf_width + - vw->vw_offset.tp_col; + vw->vw_draw_area.tr_begin.tp_col; drawn_area.tr_begin.tp_row = area->tr_begin.tp_row * vf->vf_height + - vw->vw_offset.tp_row; + vw->vw_draw_area.tr_begin.tp_row; drawn_area.tr_end.tp_col = area->tr_end.tp_col * vf->vf_width + - vw->vw_offset.tp_col; + vw->vw_draw_area.tr_begin.tp_col; drawn_area.tr_end.tp_row = area->tr_end.tp_row * vf->vf_height + - vw->vw_offset.tp_row; + vw->vw_draw_area.tr_begin.tp_row; if (vt_is_cursor_in_area(vd, &drawn_area)) { creatorfb_bitblt_bitmap(vd, vw, |