lynx-dev
[Top][All Lists]
Advanced

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

Re: LYNX-DEV Control-Z and SIGSTOP mysteries


From: Foteos Macrides
Subject: Re: LYNX-DEV Control-Z and SIGSTOP mysteries
Date: Wed, 21 May 1997 10:27:28 -0500 (EST)

"Hiram Lester, Jr." <address@hidden> wrote:
>On Tue, 20 May 1997, Foteos Macrides wrote:
>
>>      Yes, apparently he needs so contact HP for a patch to its
>> curses SIGTSTP handler.
>
>If this is a bug in HP's curses, then they must not be aware of it at ALL. 
>The same behavior occurs at least since 9.04 all the way through 10.20. 
>Surely they wouldn't have more than one bug in 10.20's curses (select
>problem was one)... (tongue in cheek). ;) 

        There *is* miscommunication in this thread because from your
original message simply saying the ^Z doesn't work I had assumed that
it really doesn't work, i.e., you don't suspend Lynx, but simply end
up with a blank screen.  However, in your last message to Klaus, you
referred to "fg", which implies that you did suspend, and are talking
about what happens when you come back.  Presumeably, the HP curses is
clearing but not repainting the screen.  Most (all?) Unix curses treat
clear() as having an implied cleakok(curscr, YES).  The VMS curses, and
slang with the most recent mods, don't, so for LYK_REFRESH (^L) in
LYMainLoop.c we have:

[...]
        case LYK_REFRESH:
           refresh_screen = TRUE;
#if defined(VMS) || defined(USE_SLANG)
           clearok(curscr, TRUE);
#endif /* VMS || USE_SLANG */
           break;
[...]


Then, when it loops back and encounters:

[...]
        /*
         *  Refresh the screen if neccessary.
         */
        if (refresh_screen) {
            clear();
            HText_pageDisplay(Newline, prev_target);
[...]


the clear() erases the screen for everyone (supposedly), and then the
HText_pageDisplay() function generates and outputs a screen display
starting from the line token in the HText structure for the current
document specified via Newline, and any strings corresponding to
prev_target, if it's non-zero due to a previous WHEREIS search,
hightlighted in some manner different from that for links and the
current link.  The HText_pageDisplay() function is fundamentally
different from a refresh(), though a refresh() is included at the
end of HText_pageDisplay().

        If refresh_screen has been set TRUE for some reason other
than that you entered ^L,  and likely clearok(curscr, NO) is in
effect, for VMS and slang, only things written by and therefore
known to the screen management functions will be cleared before
invoking HText_pageDisplay().  On VMS, for example, if you had
an unsolicited screen broadcast (e.g., that someone is trying
to reach you via the phone utility), that won't be clear()'ed.
Similarly, if HText_pageDisplay() "outputs" stuff which the
screen management functions "think" are already on the screen,
that stuff won't get written again (but should be present
'cuz it wasn't clear()'ed).  This makes the VMS and slang
screen management faster, noticeably on slow lines, but also
more easily tripped up.

        So, the HP curses possibly is failing to repaint the
screen on return from the suspend, but "thinks" it did, and
is like the VMS curses or slang so that it doesn't output
it again when it "thinks" it's already there, and the ^L
is not setting clearok(curscr, YES) 'cuz it's not VMS or
slang, so you can't force it.

        Otherwise, it seems even more seriously broken.
        
                                Fote

=========================================================================
 Foteos Macrides            Worcester Foundation for Biomedical Research
 address@hidden         222 Maple Avenue, Shrewsbury, MA 01545
=========================================================================
;
; 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]