Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 4 Mar 2001 04:48:49 -0800 (PST)
From:      Yifeng Xu <websoft@yahoo.com>
To:        freebsd-questions@freebsd.org
Cc:        ache@nagual.pp.ru, freebsd-bugs@FreeBSD.org
Subject:   **HEADS UP** bug fix for pr25439 (patch)
Message-ID:  <20010304124849.10752.qmail@web1704.mail.yahoo.com>

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

I am sorry it seems my SMTP server has problems, so I send it via Yahoo!
you may received my several previous sents. 

I think I found the bug about annoying console mouse cursor flicker
problem reported in http://www.freebsd.org/cgi/query-pr.cgi?pr=25439
by me sometimes ago, the bug is in file 
/sys/dev/syscons/syscons.c where function scrn_update will hide 
and redraw mouse cursor in a special area:

..........................
..........................
..........................
..........................
..........................
..........................
..XXXXXXXXXXXXXXXXXXXXXXXX
XX@.......................
..........................

the above image represents a full image of console screen,
every line represents a line on screen, char @ represents 
TEXT CURSOR position, area marked with 'X' is an unsafe area, 
if mouse cursor is moved into this area, syscons will become 
weird, mouse cursor flickers in very fast speed, eats CPU time 
up to 20%.

the following is a patch to fix this problem. I wish 
the bug is fixed before FreeBSD 4.3 rolls out. this is a long
standing bug. hurray!

===============

--- syscons.c.orig Sun Mar  4 16:18:59 2001
+++ syscons.c Sun Mar  4 16:22:33 2001
@@ -1719,12 +1719,9 @@
     /* remove the previous mouse pointer image if necessary */
     if (scp->status & MOUSE_VISIBLE) {
  s = scp->mouse_pos;
- e = scp->mouse_pos + scp->xsize + 1;
+ e = scp->mouse_pos;
  if ((scp->status & (MOUSE_MOVED | MOUSE_HIDDEN))
-     || and_region(&s, &e, scp->start, scp->end)
-     || ((scp->status & CURSOR_ENABLED) && 
-  (and_region(&s, &e, scp->cursor_pos, scp->cursor_pos)
-   || and_region(&s, &e, scp->cursor_oldpos, scp->cursor_oldpos)))) {
+     || and_region(&s, &e, scp->start, scp->end)) {
      sc_remove_mouse_image(scp);
      if (scp->end >= scp->xsize*scp->ysize)
   scp->end = scp->xsize*scp->ysize - 1;

===============

David Xu
davidx@viasoft.com.cn


__________________________________________________
Do You Yahoo!?
Get email at your own domain with Yahoo! Mail. 
http://personal.mail.yahoo.com/

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




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