Author: jkim
Date: Mon Nov 29 22:19:19 2010
New Revision: 216067
URL: http://svn.freebsd.org/changeset/base/216067

Log:
  Honor font size for the video mode when default fonts are compiled in kernel
  and VESA mode is enabled from loader.

Modified:
  head/sys/dev/syscons/syscons.c

Modified: head/sys/dev/syscons/syscons.c
==============================================================================
--- head/sys/dev/syscons/syscons.c      Mon Nov 29 21:53:21 2010        
(r216066)
+++ head/sys/dev/syscons/syscons.c      Mon Nov 29 22:19:19 2010        
(r216067)
@@ -348,7 +348,9 @@ static void
 sc_set_vesa_mode(scr_stat *scp, sc_softc_t *sc, int unit)
 {
        video_info_t info;
+       u_char *font;
        int depth;
+       int font_size;
        int i;
        int vmode;
 
@@ -377,9 +379,37 @@ sc_set_vesa_mode(scr_stat *scp, sc_softc
                vidd_get_info(sc->adp, vmode, &info);
        }
 
+#if !defined(SC_NO_FONT_LOADING) && defined(SC_DFLT_FONT)
+       font_size = info.vi_cheight;
+#else
+       font_size = 16;
+#endif
+       if (font_size < 14)
+               font_size = 8;
+       else if (font_size >= 16)
+               font_size = 16;
+       else
+               font_size = 14;
 #ifndef SC_NO_FONT_LOADING
-       if ((sc->fonts_loaded & FONT_16) == 0)
-               return;
+       switch (font_size) {
+       case 8:
+               if ((sc->fonts_loaded & FONT_8) == 0)
+                       return;
+               font = sc->font_8;
+               break;
+       case 14:
+               if ((sc->fonts_loaded & FONT_14) == 0)
+                       return;
+               font = sc->font_14;
+               break;
+       case 16:
+               if ((sc->fonts_loaded & FONT_16) == 0)
+                       return;
+               font = sc->font_16;
+               break;
+       }
+#else
+       font = NULL;
 #endif
 #ifdef DEV_SPLASH
        if ((sc->flags & SC_SPLASH_SCRN) != 0)
@@ -398,16 +428,12 @@ sc_set_vesa_mode(scr_stat *scp, sc_softc
        scp->xpixel = info.vi_width;
        scp->ypixel = info.vi_height;
        scp->xsize = scp->xpixel / 8;
-       scp->ysize = scp->ypixel / 16;
+       scp->ysize = scp->ypixel / font_size;
        scp->xpos = 0;
        scp->ypos = scp->ysize - 1;
        scp->xoff = scp->yoff = 0;
-#ifndef SC_NO_FONT_LOADING
-       scp->font = sc->font_16;
-#else
-       scp->font = NULL;
-#endif
-       scp->font_size = 16;
+       scp->font = font;
+       scp->font_size = font_size;
        scp->font_width = 8;
        scp->start = scp->xsize * scp->ysize - 1;
        scp->end = 0;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to