svn commit: r270446 - head/sys/dev/vt
Jean-Sebastien Pedron
dumbbell at FreeBSD.org
Sun Aug 24 09:22:04 UTC 2014
Author: dumbbell
Date: Sun Aug 24 09:22:03 2014
New Revision: 270446
URL: http://svnweb.freebsd.org/changeset/base/270446
Log:
vt(4): Remove vd_bitbltchr_t
It's replaced by vd_bitblt_text_t, which gives more context to the
backend and allows it to perform more efficiently when redrawing a given
area.
MFC after: 1 week
Modified:
head/sys/dev/vt/vt.h
head/sys/dev/vt/vt_core.c
Modified: head/sys/dev/vt/vt.h
==============================================================================
--- head/sys/dev/vt/vt.h Sun Aug 24 09:20:30 2014 (r270445)
+++ head/sys/dev/vt/vt.h Sun Aug 24 09:22:03 2014 (r270446)
@@ -294,15 +294,6 @@ typedef int vd_init_t(struct vt_device *
typedef int vd_probe_t(struct vt_device *vd);
typedef void vd_postswitch_t(struct vt_device *vd);
typedef void vd_blank_t(struct vt_device *vd, term_color_t color);
-/*
- * FIXME: Remove vd_bitblt_t and vd_putchar_t, once vd_bitblt_text_t is
- * provided by all drivers.
- */
-typedef void vd_bitbltchr_t(struct vt_device *vd, const uint8_t *src,
- const uint8_t *mask, int bpl, vt_axis_t top, vt_axis_t left,
- unsigned int width, unsigned int height, term_color_t fg, term_color_t bg);
-typedef void vd_putchar_t(struct vt_device *vd, term_char_t,
- vt_axis_t top, vt_axis_t left, term_color_t fg, term_color_t bg);
typedef void vd_bitblt_text_t(struct vt_device *vd, const struct vt_window *vw,
const term_rect_t *area);
typedef void vd_bitblt_bmp_t(struct vt_device *vd, const struct vt_window *vw,
@@ -324,7 +315,6 @@ struct vt_driver {
/* Drawing. */
vd_blank_t *vd_blank;
- vd_bitbltchr_t *vd_bitbltchr; /* FIXME: Deprecated. */
vd_drawrect_t *vd_drawrect;
vd_setpixel_t *vd_setpixel;
vd_bitblt_text_t *vd_bitblt_text;
@@ -336,9 +326,6 @@ struct vt_driver {
/* Framebuffer mmap, if present. */
vd_fb_mmap_t *vd_fb_mmap;
- /* Text mode operation. */
- vd_putchar_t *vd_putchar; /* FIXME: Deprecated. */
-
/* Update display setting on vt switch. */
vd_postswitch_t *vd_postswitch;
Modified: head/sys/dev/vt/vt_core.c
==============================================================================
--- head/sys/dev/vt/vt_core.c Sun Aug 24 09:20:30 2014 (r270445)
+++ head/sys/dev/vt/vt_core.c Sun Aug 24 09:22:03 2014 (r270446)
@@ -888,47 +888,15 @@ vt_mark_mouse_position_as_dirty(struct v
#endif
static void
-vt_bitblt_char(struct vt_device *vd, struct vt_font *vf, term_char_t c,
- int iscursor, unsigned int row, unsigned int col)
-{
- term_color_t fg, bg;
-
- vt_determine_colors(c, iscursor, &fg, &bg);
-
- if (vf != NULL) {
- const uint8_t *src;
- vt_axis_t top, left;
-
- src = vtfont_lookup(vf, c);
-
- /*
- * Align the terminal to the centre of the screen.
- * Fonts may not always be able to fill the entire
- * screen.
- */
- top = row * vf->vf_height + vd->vd_curwindow->vw_offset.tp_row;
- left = col * vf->vf_width + vd->vd_curwindow->vw_offset.tp_col;
-
- vd->vd_driver->vd_bitbltchr(vd, src, NULL, 0, top, left,
- vf->vf_width, vf->vf_height, fg, bg);
- } else {
- vd->vd_driver->vd_putchar(vd, TCHAR_CHARACTER(c),
- row, col, fg, bg);
- }
-}
-
-static void
vt_flush(struct vt_device *vd)
{
struct vt_window *vw;
struct vt_font *vf;
struct vt_bufmask tmask;
- unsigned int row, col;
term_rect_t tarea;
term_pos_t size;
- term_char_t *r;
#ifndef SC_NO_CUTPASTE
- int cursor_was_shown, cursor_moved, bpl, h, w;
+ int cursor_was_shown, cursor_moved;
#endif
vw = vd->vd_curwindow;
@@ -992,50 +960,8 @@ vt_flush(struct vt_device *vd)
vd->vd_flags &= ~VDF_INVALID;
}
- if (vd->vd_driver->vd_bitblt_text != NULL) {
- if (tarea.tr_begin.tp_col < tarea.tr_end.tp_col) {
- vd->vd_driver->vd_bitblt_text(vd, vw, &tarea);
- }
- } else {
- /*
- * FIXME: Once all backend drivers expose the
- * vd_bitblt_text_t callback, this code can be removed.
- */
- for (row = tarea.tr_begin.tp_row; row < tarea.tr_end.tp_row; row++) {
- if (!VTBUF_DIRTYROW(&tmask, row))
- continue;
- r = VTBUF_GET_ROW(&vw->vw_buf, row);
- for (col = tarea.tr_begin.tp_col;
- col < tarea.tr_end.tp_col; col++) {
- if (!VTBUF_DIRTYCOL(&tmask, col))
- continue;
-
- vt_bitblt_char(vd, vf, r[col],
- VTBUF_ISCURSOR(&vw->vw_buf, row, col), row, col);
- }
- }
-
-#ifndef SC_NO_CUTPASTE
- if (vd->vd_mshown) {
- /* Bytes per source line. */
- bpl = (vd->vd_mcursor->width + 7) >> 3;
- w = vd->vd_mcursor->width;
- h = vd->vd_mcursor->height;
-
- if ((vd->vd_mx + vd->vd_mcursor->width) >
- (size.tp_col * vf->vf_width))
- w = (size.tp_col * vf->vf_width) - vd->vd_mx - 1;
- if ((vd->vd_my + vd->vd_mcursor->height) >
- (size.tp_row * vf->vf_height))
- h = (size.tp_row * vf->vf_height) - vd->vd_my - 1;
-
- vd->vd_driver->vd_bitbltchr(vd,
- vd->vd_mcursor->map, vd->vd_mcursor->mask, bpl,
- vw->vw_offset.tp_row + vd->vd_my,
- vw->vw_offset.tp_col + vd->vd_mx,
- w, h, vd->vd_mcursor_fg, vd->vd_mcursor_bg);
- }
-#endif
+ if (tarea.tr_begin.tp_col < tarea.tr_end.tp_col) {
+ vd->vd_driver->vd_bitblt_text(vd, vw, &tarea);
}
}
More information about the svn-src-all
mailing list