Hi Linus,
Since vesafb was converted to the (strange) cfb* interface, it uses random
colors for the cursor, making cursor invisible when console uses black foreground
(f.e. Midnight Commander does that). Problem is common to all fbdevs which
use fbcon-accel interface.
This change tries to restore old behavior which existed before cfb* came in.
Unfortunately due to region.color semantic it is not possible to completely
restore previous behavior -
+ for truecolor cfbfillrect always consults current palette, so we do not
have "always invert" constant available, and so we do inversion with palette
color 15 (it is light white, ~0, by default)
+ for directcolor it assumes that display has at least 4 bits per color.
+ for pseudocolor it works as old code worked.
Thanks,
Petr Vandrovec
van...@vc...
diff -urdN linux/drivers/video/fbcon-accel.c linux/drivers/video/fbcon-accel.c
--- linux/drivers/video/fbcon-accel.c 2002-08-18 01:35:06.000000000 +0200
+++ linux/drivers/video/fbcon-accel.c 2002-08-18 15:07:42.000000000 +0200
@@ -104,7 +104,10 @@
struct fb_info *info = p->fb_info;
struct fb_fillrect region;
- region.color = attr_fgcol_ec(p, p->conp);
+ if (info->fix.visual == FB_VISUAL_PSEUDOCOLOR || info->fix.visual == FB_VISUAL_TRUECOLOR)
+ region.color = 0x0F;
+ else
+ region.color = (0x0F << info->var.red.offset) | (0x0F << info->var.green.offset) | (0x0F << info->var.blue.offset);
region.dx = xx * fontwidth(p);
region.dy = yy * fontheight(p);
region.width = fontwidth(p);
|