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