summaryrefslogtreecommitdiffstats
path: root/drivers/video/fbcon.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/fbcon.c')
-rw-r--r--drivers/video/fbcon.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/video/fbcon.c b/drivers/video/fbcon.c
index dfb019fdd..a78843085 100644
--- a/drivers/video/fbcon.c
+++ b/drivers/video/fbcon.c
@@ -311,6 +311,10 @@ void set_con2fb_map(int unit, int newidx)
fb_display[unit]._fontheightlog = fontheightlog;
fb_display[unit].userfont = userfont;
fb_display[unit].fb_info = newfb;
+ if (conp)
+ conp->vc_display_fg = &newfb->display_fg;
+ if (!newfb->display_fg)
+ newfb->display_fg = conp;
if (!newfb->changevar)
newfb->changevar = oldfb->changevar;
/* tell console var has changed */
@@ -683,7 +687,7 @@ static void fbcon_setup(int con, int init, int logo)
}
if (save) {
q = (unsigned short *)(conp->vc_origin + conp->vc_size_row * old_rows);
- memcpy(q, save, logo_lines * nr_cols * 2);
+ scr_memcpyw(q, save, logo_lines * nr_cols * 2);
conp->vc_y += logo_lines;
conp->vc_pos += logo_lines * conp->vc_size_row;
kfree(save);
@@ -1167,8 +1171,12 @@ void fbcon_redraw_bmove(struct display *p, int sy, int sx, int dy, int dx, int h
static inline void fbcon_softback_note(struct vc_data *conp, int t, int count)
{
- unsigned short *p = (unsigned short *)
- (conp->vc_origin + t * conp->vc_size_row);
+ unsigned short *p;
+
+ if (conp->vc_num != fg_console)
+ return;
+ p = (unsigned short *)(conp->vc_origin + t * conp->vc_size_row);
+
while (count) {
scr_memcpyw((u16 *)softback_in, p, conp->vc_size_row);
count--;