From 5e68616afe518e0d3616ce28f7611ef4e9e6323b Mon Sep 17 00:00:00 2001 From: David Hollister Date: Mon, 26 Jun 2006 00:26:41 -0700 Subject: [PATCH] --- yaml --- r: 30299 b: refs/heads/master c: 4ee1acce49d616e0e3fbff76fa1dea0c7350535d h: refs/heads/master i: 30297: ba7ce17784c6883a140db79e352ebec402cb15c8 30295: 8316ea7d36de25ae4ad12ed71fed74f867fe51a5 v: v3 --- [refs] | 2 +- trunk/drivers/char/vt.c | 26 +++++++++++++++++--------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 2f343342da18..31d1e5b3e378 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6dbde380ca525bbfedd65e11402f345e1d64cba9 +refs/heads/master: 4ee1acce49d616e0e3fbff76fa1dea0c7350535d diff --git a/trunk/drivers/char/vt.c b/trunk/drivers/char/vt.c index 6c94879e0b99..eb27eed48a86 100644 --- a/trunk/drivers/char/vt.c +++ b/trunk/drivers/char/vt.c @@ -2665,7 +2665,7 @@ int __init vty_init(void) int take_over_console(const struct consw *csw, int first, int last, int deflt) { - int i, j = -1; + int i, j = -1, k = -1; const char *desc; struct module *owner; @@ -2701,8 +2701,11 @@ int take_over_console(const struct consw *csw, int first, int last, int deflt) continue; j = i; - if (CON_IS_VISIBLE(vc)) + if (CON_IS_VISIBLE(vc)) { + k = i; save_screen(vc); + } + old_was_color = vc->vc_can_do_color; vc->vc_sw->con_deinit(vc); vc->vc_origin = (unsigned long)vc->vc_screenbuf; @@ -2718,18 +2721,23 @@ int take_over_console(const struct consw *csw, int first, int last, int deflt) */ if (old_was_color != vc->vc_can_do_color) clear_buffer_attributes(vc); - - if (CON_IS_VISIBLE(vc)) - update_screen(vc); } + printk("Console: switching "); if (!deflt) printk("consoles %d-%d ", first+1, last+1); - if (j >= 0) + if (j >= 0) { + struct vc_data *vc = vc_cons[j].d; + printk("to %s %s %dx%d\n", - vc_cons[j].d->vc_can_do_color ? "colour" : "mono", - desc, vc_cons[j].d->vc_cols, vc_cons[j].d->vc_rows); - else + vc->vc_can_do_color ? "colour" : "mono", + desc, vc->vc_cols, vc->vc_rows); + + if (k >= 0) { + vc = vc_cons[k].d; + update_screen(vc); + } + } else printk("to %s\n", desc); release_console_sem();