NetBSD Problem Report #26660
Received: (qmail 27092 invoked by uid 605); 14 Aug 2004 15:08:05 -0000
Message-Id: <200408141450.i7EEopHZ003693@snowdrop.l8s.co.uk>
Date: Sat, 14 Aug 2004 15:50:51 +0100 (BST)
From: dsl@netbsd.org
Sender: gnats-bugs-owner@NetBSD.org
Reply-To: dsl@netbsd.org
To: gnats-bugs@gnats.netbsd.org
Subject: libcurses 'curscr' contains the wrong information
X-Send-Pr-Version: 3.95
>Number: 26660
>Category: lib
>Synopsis: libcurses 'curscr' contains the wrong information
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: lib-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Aug 14 15:09:01 +0000 2004
>Closed-Date:
>Last-Modified: Sat Jul 23 23:50:01 +0000 2005
>Originator: David Laight
>Release: NetBSD 2.0 current
>Organization:
>Environment:
current sources
Architecture: i386
Machine: i386
>Description:
Other curses implementations use 'curscr' for the screen image
that has been processed by wnoutrefresh(). NetBSD's curses
uses the internal structure __virtscr for that and uses 'curscr'
for the image processed bu doupdate() - ie the data that is actually
on the screen display.
wrefresh(stdscr) is also expected to re-output the entire screen
(eg if it has been corrupted by non-curses output).
>How-To-Repeat:
Run code that uses the (almost) portable code below to perform
a 'pop up box' without corrupting the underlying screen, and without
knowing which WINDOWs need to be refreshed in which order to redraw
the screen image.
This code:
popup_win = newwin( ... );
sv_win = dupwin(popup_win);
overwrite(stdscr, sv_win);
.... do display in popup_win ...
overwrite(sv_win, popup_win);
wnoutrefresh(sv_win);
delwin(sv_win);
del_win(popup_win);
only works if preceded by a doupdate() call.
>Fix:
Completely redo all the refresh handling...
>Release-Note:
>Audit-Trail:
From: David Laight <dsl@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: pr/26660 CVS commit: src/usr.bin/menuc
Date: Sat, 14 Aug 2004 15:51:08 +0000 (UTC)
Module Name: src
Committed By: dsl
Date: Sat Aug 14 15:51:08 UTC 2004
Modified Files:
src/usr.bin/menuc: menu_sys.def
Log Message:
Call doupdate() before copying out of stdscr (avoids PR 26660)
Delete a diagnostic variable.
To generate a diff of this commit:
cvs rdiff -r1.54 -r1.55 src/usr.bin/menuc/menu_sys.def
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: Julian Coleman <jdc@coris.org.uk>
To: dsl@netbsd.org
Cc: gnats-bugs@gnats.netbsd.org
Subject: Re: lib/26660: libcurses 'curscr' contains the wrong information
Date: Fri, 3 Sep 2004 15:05:23 +0100
> Other curses implementations use 'curscr' for the screen image
> that has been processed by wnoutrefresh(). NetBSD's curses
> uses the internal structure __virtscr for that and uses 'curscr'
> for the image processed bu doupdate() - ie the data that is actually
> on the screen display.
When I implemented this, I couldn't find a definitive source for what
`curscr' represented. I took it to be the contents of the terminal - that is
the display as processed by doupdate() or wrefresh(). If this isn't the
case, then we can remove `__virtscr' completely and push the updates directly
to `curscr'. That should also speed things up (avoiding the double copy).
One side affect will be that the sequence:
wnoutrefresh(win)
wrefresh(curscr)
won't repaint the terminal as it was before, but will also add the changes
in `win'.
> wrefresh(stdscr) is also expected to re-output the entire screen
> (eg if it has been corrupted by non-curses output).
I thought this was the job of wrefesh(curscr), as wrefresh(stdscr), i.e.
refresh() will only write changes.
> >Fix:
> Completely redo all the refresh handling...
That's probably a reasonable idea anyway. The code in quickch() at least
needs looking at.
J
--
My other computer also runs NetBSD / Sailing at Newbiggin
http://www.netbsd.org/ / http://www.newbigginsailingclub.org/
From: Soren Jacobsen <snj@netbsd.org>
To: gnats-bugs@netbsd.org
Cc:
Subject: PR/26660 CVS commit: [netbsd-2] src/usr.bin/menuc
Date: Sat, 23 Jul 2005 23:49:37 +0000 (UTC)
Module Name: src
Committed By: snj
Date: Sat Jul 23 23:49:37 UTC 2005
Modified Files:
src/usr.bin/menuc [netbsd-2]: menu_sys.def
Log Message:
Pull up revision 1.55 (requested by riz in ticket #5515):
Call doupdate() before copying out of stdscr (avoids PR 26660)
Delete a diagnostic variable.
To generate a diff of this commit:
cvs rdiff -r1.53.4.1 -r1.53.4.2 src/usr.bin/menuc/menu_sys.def
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.