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);
        }
 }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to