Date: Wed, 17 Jul 2013 23:29:56 +0000 (UTC) From: Jung-uk Kim <jkim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r253439 - head/sys/dev/syscons Message-ID: <201307172329.r6HNTuAG077096@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jkim Date: Wed Jul 17 23:29:56 2013 New Revision: 253439 URL: http://svnweb.freebsd.org/changeset/base/253439 Log: Reload font when syscons(4) is resuming without switching mode. Reported by: adrian (more than a year ago) Prodded by: adrian (less than a month ago) Modified: head/sys/dev/syscons/syscons.c Modified: head/sys/dev/syscons/syscons.c ============================================================================== --- head/sys/dev/syscons/syscons.c Wed Jul 17 23:26:56 2013 (r253438) +++ head/sys/dev/syscons/syscons.c Wed Jul 17 23:29:56 2013 (r253439) @@ -222,6 +222,7 @@ static int finish_vt_acq(scr_stat *scp); static void exchange_scr(sc_softc_t *sc); static void update_cursor_image(scr_stat *scp); static void change_cursor_shape(scr_stat *scp, int flags, int base, int height); +static void update_font(scr_stat *); static int save_kbd_state(scr_stat *scp); static int update_kbd_state(scr_stat *scp, int state, int mask); static int update_kbd_leds(scr_stat *scp, int which); @@ -3142,7 +3143,7 @@ scresume(__unused void *arg) suspend_in_progress = FALSE; if (sc_susp_scr < 0) { - mark_all(sc_console->sc->cur_scp); + update_font(sc_console->sc->cur_scp); return; } sc_switch_scr(sc_console->sc, sc_susp_scr); @@ -3647,6 +3648,37 @@ sctty_mmap(struct tty *tp, vm_ooffset_t return vidd_mmap(scp->sc->adp, offset, paddr, nprot, memattr); } +static void +update_font(scr_stat *scp) +{ +#ifndef SC_NO_FONT_LOADING + /* load appropriate font */ + if (!(scp->status & GRAPHICS_MODE)) { + if (!(scp->status & PIXEL_MODE) && ISFONTAVAIL(scp->sc->adp->va_flags)) { + if (scp->font_size < 14) { + if (scp->sc->fonts_loaded & FONT_8) + sc_load_font(scp, 0, 8, 8, scp->sc->font_8, 0, 256); + } else if (scp->font_size >= 16) { + if (scp->sc->fonts_loaded & FONT_16) + sc_load_font(scp, 0, 16, 8, scp->sc->font_16, 0, 256); + } else { + if (scp->sc->fonts_loaded & FONT_14) + sc_load_font(scp, 0, 14, 8, scp->sc->font_14, 0, 256); + } + /* + * FONT KLUDGE: + * This is an interim kludge to display correct font. + * Always use the font page #0 on the video plane 2. + * Somehow we cannot show the font in other font pages on + * some video cards... XXX + */ + sc_show_font(scp, 0); + } + mark_all(scp); + } +#endif /* !SC_NO_FONT_LOADING */ +} + static int save_kbd_state(scr_stat *scp) { @@ -3719,32 +3751,7 @@ set_mode(scr_stat *scp) (void *)scp->sc->adp->va_window, FALSE); #endif -#ifndef SC_NO_FONT_LOADING - /* load appropriate font */ - if (!(scp->status & GRAPHICS_MODE)) { - if (!(scp->status & PIXEL_MODE) && ISFONTAVAIL(scp->sc->adp->va_flags)) { - if (scp->font_size < 14) { - if (scp->sc->fonts_loaded & FONT_8) - sc_load_font(scp, 0, 8, 8, scp->sc->font_8, 0, 256); - } else if (scp->font_size >= 16) { - if (scp->sc->fonts_loaded & FONT_16) - sc_load_font(scp, 0, 16, 8, scp->sc->font_16, 0, 256); - } else { - if (scp->sc->fonts_loaded & FONT_14) - sc_load_font(scp, 0, 14, 8, scp->sc->font_14, 0, 256); - } - /* - * FONT KLUDGE: - * This is an interim kludge to display correct font. - * Always use the font page #0 on the video plane 2. - * Somehow we cannot show the font in other font pages on - * some video cards... XXX - */ - sc_show_font(scp, 0); - } - mark_all(scp); - } -#endif /* !SC_NO_FONT_LOADING */ + update_font(scp); sc_set_border(scp, scp->border); sc_set_cursor_image(scp);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201307172329.r6HNTuAG077096>