Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 4 Mar 2001 18:36:27 -0800 (PST)
From:      davidx@viasoft.com.cn
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   kern/25536: fix annoying console mouse cursor flicker problem
Message-ID:  <200103050236.f252aRD99282@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         25536
>Category:       kern
>Synopsis:       fix annoying console mouse cursor flicker problem
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Mar 04 18:40:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     David Xu
>Release:        FreeBSD 4.2-stable
>Organization:
viasoft
>Environment:
FreeBSD davidbsd.viasoft.com.cn 4.2-STABLE FreeBSD 4.2-STABLE #10: Fri Mar  2 09
:24:41 CST 2001     root@davidbsd.viasoft.com.cn:/usr/src/sys/compile/xu  i386
>Description:
here is a patch for the problem reported in PR25439, I found the bug is
in /sys/dev/syscons/syscons.c, where function srcn_update detects if text cursor is in a special area, if it is in the area, the function will repeatly hide and show text cursor in very fast speed, the condition remains true until mouse cursor is moved away from such area,
cause 20% of CPU time is wasted.


>How-To-Repeat:
.........................
.........................
.....xxxxxxxxxxxxxxxxxxxx
xxxxx@...................
.........................

above image represents a screen image, every line represents a screen
line, char @ is text cursor position, if mouse cursor is moved into 
area marked with char x, then mouse cursor flickers weirdly.



>Fix:
patch for /sys/dev/syscons.c:

--- syscons.c.orig      Mon Mar  5 08:36:49 2001
+++ syscons.c   Mon Mar  5 08:37:11 2001
@@ -1723,6 +1723,7 @@
        if ((scp->status & (MOUSE_MOVED | MOUSE_HIDDEN))
            || and_region(&s, &e, scp->start, scp->end)
            || ((scp->status & CURSOR_ENABLED) &&
+               (scp->cursor_pos != scp->cursor_oldpos) &&
                (and_region(&s, &e, scp->cursor_pos, scp->cursor_pos)
                 || and_region(&s, &e, scp->cursor_oldpos, scp->cursor_oldpos)))
) {
            sc_remove_mouse_image(scp);



>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200103050236.f252aRD99282>