aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/fb
diff options
context:
space:
mode:
authorJean-Sébastien Pédron <dumbbell@FreeBSD.org>2014-08-25 19:06:31 +0000
committerJean-Sébastien Pédron <dumbbell@FreeBSD.org>2014-08-25 19:06:31 +0000
commit83fbb296a95b450d60da76991abc288208fa4f6d (patch)
tree7b2b23dc301451432b594c056eba51ee37e7cb8e /sys/dev/fb
parent7e802e496821085fb0bd0dbf378f70c6270aa68a (diff)
downloadsrc-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.c14
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,