From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Antonino A. Daplas" Subject: Re: patch fixing background next to penguin logo in monochrome Date: Mon, 16 Aug 2004 03:11:51 +0000 (UTC) Sender: linux-fbdev-devel-admin@lists.sourceforge.net Message-ID: <200409161110.12046.adaplas@hotpop.com> References: <1092254183.4209.16.camel@joy.home> <200409130625.07250.adaplas@hotpop.com> Reply-To: adaplas@pol.net Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: Received: from sc8-sf-mx2-b.sourceforge.net ([10.3.1.12] helo=sc8-sf-mx2.sourceforge.net) by sc8-sf-list1.sourceforge.net with esmtp (Exim 4.30) id 1BwXth-0002MU-VX for linux-fbdev-devel@lists.sourceforge.net; Sun, 15 Aug 2004 20:10:57 -0700 Received: from smtp-out.hotpop.com ([38.113.3.71]) by sc8-sf-mx2.sourceforge.net with esmtp (Exim 4.34) id 1BwXth-0003ND-Fi for linux-fbdev-devel@lists.sourceforge.net; Sun, 15 Aug 2004 20:10:57 -0700 Received: from hotpop.com (kubrick.hotpop.com [38.113.3.103]) by smtp-out.hotpop.com (Postfix) with SMTP id 14D0210792DE for ; Mon, 16 Aug 2004 02:41:48 +0000 (UTC) In-Reply-To: Content-Disposition: inline Errors-To: linux-fbdev-devel-admin@lists.sourceforge.net List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Date: Thu, 16 Sep 2004 11:10:11 +0800 Content-Type: text/plain; charset="us-ascii" To: Geert Uytterhoeven Cc: Petr Stehlik , Linux Frame Buffer Device Development , "Christian T. Steigies" On Sunday 15 August 2004 20:25, Geert Uytterhoeven wrote: > > This one is a little difficult since there is currently no method to > > convert monochrome attributes to color and vice versa. The best one can > > do is to clear all attributes when switching from mono<->color. > > > > When switching, one will get plain text only. This is probably better > > than having text with incorrect attributes. > > > > Attached patch is completely untested, but it's the same one in 2.6. > > Doesn't help, still the same behavior :-( > I looked at the code, and the flow seems to be like this: fbcon_switch->fb_set_var->changevar->fbcon_setup->update_screen/redraw_screen However, fbcon_setup() updates conp->vc_can_do_color, so by the time the redraw_screen function in console.c checks for the vc_can_do_color field, it always returns equal. So instead of clearing the buffer attributes in redraw_screen(), we do it instead in fbcon_setup(). Try the patch below. You might have to apply them manually as I'm using Suse-9.0 linux kernel, which has the bootsplash code. Also, all the previous patches need to be reversed. Tony PS: If we can change the clear_buffer_attribute to rebuild attributes from the old buffer instead of just clearing the attributes, that would be perfect. Is there an easy way to do that? --- diff -uprN linux-2.4-orig/drivers/video/fbcon.c linux-2.4/drivers/video/fbcon.c --- linux-2.4-orig/drivers/video/fbcon.c 2004-09-16 10:50:58.093218288 +0800 +++ linux-2.4/drivers/video/fbcon.c 2004-09-16 10:53:12.826735680 +0800 @@ -618,12 +618,25 @@ static void fbcon_font_widths(struct dis #define fontwidthvalid(p,w) ((p)->dispsw->fontwidthmask & FONTWIDTH(w)) +static void clear_buffer_attributes(struct vc_data *conp) +{ + unsigned short *p = (unsigned short *) conp->vc_origin; + int count = conp->vc_screenbuf_size/2; + int mask = conp->vc_hi_font_mask | 0xff; + int erase_char = conp->vc_video_erase_char; + + for (; count > 0; count--, p++) { + scr_writew((scr_readw(p)&mask) | (erase_char&~mask), p); + } +} + static void fbcon_setup(int con, int init, int logo) { struct display *p = &fb_display[con]; struct vc_data *conp = p->conp; int nr_rows, nr_cols; int old_rows, old_cols; + int old_was_color = conp->vc_can_do_color; unsigned short *save = NULL, *r, *q; int i, charcnt = 256; struct fbcon_font_desc *font; @@ -803,6 +816,8 @@ static void fbcon_setup(int con, int ini p->bgcol = 0; if (!init) { + if (old_was_color != conp->vc_can_do_color) + clear_buffer_attributes(conp); if (conp->vc_cols != nr_cols || conp->vc_rows != nr_rows) vc_resize_con(nr_rows, nr_cols, con); else if (CON_IS_VISIBLE(conp) && ------------------------------------------------------- SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift. http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285