svn commit: r216067 - head/sys/dev/syscons
Jung-uk Kim
jkim at FreeBSD.org
Mon Nov 29 22:19:19 UTC 2010
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;
More information about the svn-src-all
mailing list