Index: dev/syscons/syscons.c =================================================================== RCS file: /home/ncvs/src/sys/dev/syscons/syscons.c,v retrieving revision 1.493.2.5 diff -u -r1.493.2.5 syscons.c --- dev/syscons/syscons.c 13 May 2012 17:13:21 -0000 1.493.2.5 +++ dev/syscons/syscons.c 29 May 2012 01:17:47 -0000 @@ -3072,6 +3072,9 @@ ("sc_console->sc->cur_scp != NULL")); sc_touch_scrn_saver(); + wait_scrn_saver_stop(NULL); + current_saver = none_saver; + if (!cold && sc_console->sc->cur_scp->index != sc_console->index && sc_console->sc->cur_scp->smode.mode == VT_AUTO && @@ -3090,10 +3093,14 @@ KASSERT(sc_console->sc->cur_scp != NULL, ("sc_console->sc->cur_scp != NULL")); + sc_touch_scrn_saver(); +#ifdef DEV_SPLASH + wait_scrn_saver_stop(NULL); +#endif + sc_susp_scr = sc_console->sc->cur_scp->index; if (sc_no_suspend_vtswitch || sc_susp_scr == sc_console->index) { - sc_touch_scrn_saver(); sc_susp_scr = -1; return; } @@ -3109,6 +3116,8 @@ static void scresume(__unused void *arg) { + scr_stat *scp; + int mode; KASSERT(sc_console != NULL, ("sc_console != NULL")); KASSERT(sc_console->sc != NULL, ("sc_console->sc != NULL")); @@ -3116,6 +3125,23 @@ ("sc_console->sc->cur_scp != NULL")); suspend_in_progress = FALSE; + + sc_touch_scrn_saver(); +#ifdef DEV_SPLASH + wait_scrn_saver_stop(NULL); +#endif + + scp = sc_console->sc->cur_scp; + mode = scp->sc->adp->va_mode; + + scp->mode = scp->sc->adp->va_initial_mode; + set_mode(scp); + + if (mode != scp->sc->adp->va_initial_mode) { + scp->mode = mode; + set_mode(scp); + } + if (sc_susp_scr < 0) { mark_all(sc_console->sc->cur_scp); return; Index: dev/fb/vesa.c =================================================================== RCS file: /home/ncvs/src/sys/dev/fb/vesa.c,v retrieving revision 1.49.2.4 diff -u -r1.49.2.4 vesa.c --- dev/fb/vesa.c 27 Mar 2012 23:59:48 -0000 1.49.2.4 +++ dev/fb/vesa.c 26 May 2012 08:01:39 -0000 @@ -1499,9 +1499,11 @@ (void)vesa_bios_post(); bsize = adp->va_buffer_size; mode = adp->va_mode; +#if 0 (void)vesa_set_mode(adp, adp->va_initial_mode); if (mode != adp->va_initial_mode) (void)vesa_set_mode(adp, mode); +#endif if (((adp_state_t *)p)->sig != V_STATE_SIG) return ((*prevvidsw->load_state)(adp, p));