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>