lynx-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: LYNX-DEV scrollok and lynx_force_repaint


From: Klaus Weide
Subject: Re: LYNX-DEV scrollok and lynx_force_repaint
Date: Wed, 5 Nov 1997 20:47:47 -0600 (CST)

On Wed, 5 Nov 1997, Foteos Macrides wrote:

>       You want:
> 
> #if defined(FANCY_CURSES) || defined(USE_SLANG)
>           if (!enable_scrollback)
> #if defined(VMS) && !defined(USE_SLANG)
>               if (form->num_value == OrigNumValue)
>                   c = DO_NOTHING;
>               else
> #endif /* VMS && !USE_SLANG*/
>               c = 23; 
>           else
> #endif /* FANCY_CURSES || USE_SLANG */
>               c = 12;  /* CTRL-L for repaint */
>           break;
> 
> 
>       Only VMS curses can literally DO_NOTHING when the selection
> isn't changed, but neither slang nor Unix curses need the 12 unless
> enable_scrollback is set.   With 23, slang and VMS curses will use
> their smart repaint, but Unix curses is still stuck with a brain
> dead repaint (i.e., that's noticeable, even with a T1 line :).

If I understand right, the "brain dead repaint" comes from using clear()
here:
        if (refresh_screen) {
            clear();
            HText_pageDisplay(Newline, prev_target);

There is no clear() in the section a bit above that

        if (curdoc.line != Newline) {

            refresh_screen = FALSE;

            HText_pageDisplay(Newline, prev_target);

So it seems "clear" that HText_pageDisplay() can work fine without
first getting the screen clear()ed (it does clrtoel() for each line).

UNIX curses is doing what it is told, from the man page:

     The erase() and werase() routines copy blanks to every posi-
     tion in the window.

     The clear() and  wclear()  routines  are  like  erase()  and
     werase(),  but they also call clearok() , so that the screen
     is cleared completely on that window and repainted from scratch.

The clear() used with slang was changed in May to not behave like that
any more.  It seems, from your description, that the VMS curses never
did.  They both seem to act like curses erase(), not like clear().

So is there a good reason not to change that one clear() in mainloop
to an erase()?  Is erase available in all curses libs?

    Klaus

;
; To UNSUBSCRIBE:  Send a mail message to address@hidden
;                  with "unsubscribe lynx-dev" (without the
;                  quotation marks) on a line by itself.
;

reply via email to

[Prev in Thread] Current Thread [Next in Thread]