--- tdfxfb.c.2 Sat Jun 3 21:53:14 2000 +++ tdfxfb.c Sat Jun 3 22:28:02 2000 @@ -2195,6 +2195,8 @@ struct fb_info *fb) { struct fb_info_tdfx *info = (struct fb_info_tdfx*)fb; struct tdfxfb_par par; + int old_con = currcon; + int set_par = 1; /* Do we have to save the colormap? */ if (currcon>=0) @@ -2204,7 +2206,16 @@ currcon = con; fb_display[currcon].var.activate = FB_ACTIVATE_NOW; tdfxfb_decode_var(&fb_display[con].var, &par, info); - tdfxfb_set_par(&par, info); + if (old_con>=0 && vt_cons[old_con]->vc_mode!=KD_GRAPHICS) { + /* check if we have to change video registers */ + struct tdfxfb_par old_par; + tdfxfb_decode_var(&fb_display[old_con].var, &old_par, info); + if (!memcmp(&par,&old_par,sizeof(par))) + set_par = 0; /* avoid flicker */ + } + if (set_par) + tdfxfb_set_par(&par, info); + if (fb_display[con].dispsw && fb_display[con].conp) fb_con.con_cursor(fb_display[con].conp, CM_ERASE);