On Thu, Feb 10, 2000 at 11:11:53AM +0900, Kazutaka YOKOTA wrote:
> >On Wed, Feb 09, 2000 at 08:35:07PM +0200, Ruslan Ermilov wrote:
> >> Hi!
> >> 
> >> 1. Set cursor "blinking" or "destructive" (SC_BLINK_CURSOR)
> >> 2. Press Scroll Lock (cursor will go away)
> >> 3. Switch to another vtyX
> >> 4. Switch to the original vty, where you pressed Scroll Lock
> >> 5. Watch the cursor will appear at the same position as it was on vtyX.
> >> 
> >The following patch fixes the problem.
> 
> Thank you for the report and patch.  
> 
> While your patch seems to work, it looks to me it's slightly over-kill
> for this problem; we shouldn't need to call sc_remove_cursor_image()
> every time the screen is refreshed in scrn_upcate().
> 
> Because this problem is caused by exchange_scr() not removing the text
> cursor when changing to the vty where the cursor is not currently
> shown, we had better fix exchange_scr().
> 
> The attached patch is simpler and fixes the problem.  I verified it
> works here.  Please test.  Thank you.
> 
Tested, it works, but while I was testing, I've found yet another glitch.

Please try an attached cursor.sh with and without an attached patch (p).
On my box, the cursor.sh causes "normal" cursor to be displayed several
times, and an attached patch fixes the problem.


Thanks,
-- 
Ruslan Ermilov          Sysadmin and DBA of the
[EMAIL PROTECTED]        United Commercial Bank,
[EMAIL PROTECTED]          FreeBSD committer,
+380.652.247.647        Simferopol, Ukraine

http://www.FreeBSD.org  The Power To Serve
http://www.oracle.com   Enabling The Information Age

cursor.sh

--- scterm-sc.c~        Wed Feb  9 17:37:58 2000
+++ scterm-sc.c Thu Feb 10 10:22:58 2000
@@ -530,7 +530,6 @@
            if (!ISGRAPHSC(sc->cur_scp)) {
                i = spltty();
                sc_set_cursor_image(sc->cur_scp);
-               sc_draw_cursor_image(sc->cur_scp);
                splx(i);
            }
            break;
--- syscons.c~  Sun Feb  6 17:28:00 2000
+++ syscons.c   Thu Feb 10 10:26:41 2000
@@ -735,7 +735,6 @@
        if (!ISGRAPHSC(sc->cur_scp)) {
            s = spltty();
            sc_set_cursor_image(sc->cur_scp);
-           sc_draw_cursor_image(sc->cur_scp);
            splx(s);
        }
        return 0;
@@ -2335,6 +2334,8 @@
 
     /* save the current state of video and keyboard */
     sc_move_cursor(sc->old_scp, sc->old_scp->xpos, sc->old_scp->ypos);
+    if (!ISGRAPHSC(sc->old_scp))
+       sc_remove_cursor_image(sc->old_scp);
     if (sc->old_scp->kbd_mode == K_XLATE)
        save_kbd_state(sc->old_scp);
 

Reply via email to