Re: [PATCH] fbdev: workaround for broken X servers
From: Antonino A. Daplas <hidden>
Date: 2004-11-06 02:03:42
On Saturday 06 November 2004 08:38, Benjamin Herrenschmidt wrote:
On Fri, 2004-11-05 at 20:55 +0800, Antonino A. Daplas wrote:quoted
And make it black is usually done in software (by memsetting the screen with the black color). So why not this: In fbcon_blank(), if the blank parameter is: 0 - unblank the screen, and call info->fbops->fb_blank(VESA_NO_BLANKING), then return a nonzero value to force a redraw. 1,2,3,4 - clear the screen with all black 2,3,4 - call info->fbops->fb_blank(blank - 1); Similarly, we can do the same thing in fbmem.c:fb_blank(), but without the software blanking. Drivers will just need to follow the VESA_* defines in fb.h (which happens to be also defined in console.h)Ah... so radeonfb is correct then, and fb_blank() is not ? X is definitely passing +1 values it seems.
Well, depends on what approach is adopted:
Most drivers do this:
if (blank)
switch(blank-1) {
...
}
Which means fb_blank() and fbcon_blank() should pass the
blank parameter to info->fbops->fb_blank() unchanged.
If we adopt the approach of passing (blank -1) to
info->fbops->fb_blank(), then drivers simply do a:
switch(blank) {
...
}
Currently, fbcon_blank() does the first method (pass blank unchanged),
which means radeonfb is wrong. Adopting the second method will make
radeonfb do the right thing, but will require changes to a lot of drivers.
So, what will it be then?
Tony
-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click