2004-11-08 17:06:11

by Gerd Knorr

[permalink] [raw]
Subject: cursor bug

Hi,

There is annonying cursor bug in recent kernels (started in 2.6.10-rc1
IIRC). There kernel seems not to keep track of the cursor state
correctly when switching virtual terminals. Here is how to reproduce
it:

(1) boot with vesafb (thats what I'm using, maybe it shows on other
framebuffers and/or vgacon as well).
(2) login into one terminal, then type "echo -ne '\033[?17;15;239c'".
You should have a nice, yellow and *not* blinking cursor block.
That is what I have in my .profile because I can't stand the
blinking cursors.
(3) Switch to another terminal. The cursor goes into blinking
underscore mode now (i.e. the default cursor).
(4) Switch back to the first terminal. Now you have a yellow block
with the last two pixel lines (i.e. the underscore) blinking.

Oh no. Please fix that. Thank you.

Gerd

--
#define printk(args...) fprintf(stderr, ## args)


2004-11-09 02:38:22

by Antonino A. Daplas

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] cursor bug

On Tuesday 09 November 2004 00:11, Gerd Knorr wrote:
> Hi,
>
> There is annonying cursor bug in recent kernels (started in 2.6.10-rc1
> IIRC). There kernel seems not to keep track of the cursor state
> correctly when switching virtual terminals. Here is how to reproduce
> it:
>
> (1) boot with vesafb (thats what I'm using, maybe it shows on other
> framebuffers and/or vgacon as well).
> (2) login into one terminal, then type "echo -ne '\033[?17;15;239c'".
> You should have a nice, yellow and *not* blinking cursor block.
> That is what I have in my .profile because I can't stand the
> blinking cursors.
> (3) Switch to another terminal. The cursor goes into blinking
> underscore mode now (i.e. the default cursor).
> (4) Switch back to the first terminal. Now you have a yellow block
> with the last two pixel lines (i.e. the underscore) blinking.
>
> Oh no. Please fix that. Thank you.

Hmn, this bug has been present since the beginning of 2.6, probably even
2.5, hidden, but got exposed during the cursor cleanup. The main problem is
that fbcon is not checking if the vt is using its own softcursor, and this
has been the case since the fb architecture was rewritten.

We fix this by checking if vt.c is using its softcursor
(vc->vc_cursor_type & 0x10), and if true, disable fbcon cursor.

I'll submit a patch to Andrew.

Tony