MirBSD manpage: curs_refresh(3), doupdate(3), redrawwin(3), refresh(3), wnoutrefresh(3), wredrawln(3), wrefresh(3)

curs_refresh(3)     UNIX Programmer's Manual      curs_refresh(3)


     doupdate, redrawwin, refresh, wnoutrefresh, wredrawln,
     wrefresh - refresh curses windows and lines


     #include <curses.h>

     int refresh(void);
     int wrefresh(WINDOW *win);
     int wnoutrefresh(WINDOW *win);
     int doupdate(void);
     int redrawwin(WINDOW *win);
     int wredrawln(WINDOW *win, int beg_line, int num_lines);


     The refresh and wrefresh routines (or wnoutrefresh and doup-
     date)  must  be called to get actual output to the terminal,
     as other routines merely  manipulate  data  structures.  The
     routine  wrefresh  copies  the  named window to the physical
     terminal screen, taking into account what is  already  there
     to  do optimizations. The refresh routine is the same, using
     stdscr as the default window. Unless leaveok  has  been  en-
     abled,  the  physical  cursor of the terminal is left at the
     location of the cursor for that window.

     The wnoutrefresh and doupdate routines  allow  multiple  up-
     dates  with more efficiency than wrefresh alone. In addition
     to all the window structures, curses keeps two  data  struc-
     tures  representing  the terminal screen: a physical screen,
     describing what is actually on the  screen,  and  a  virtual
     screen,  describing what the programmer wants to have on the

     The routine wrefresh works by  first  calling  wnoutrefresh,
     which  copies  the  named  window to the virtual screen, and
     then calling doupdate, which compares the virtual screen  to
     the  physical screen and does the actual update. If the pro-
     grammer wishes to output several windows at once,  a  series
     of  calls  to  wrefresh  results  in  alternating  calls  to
     wnoutrefresh and doupdate, causing several bursts of  output
     to  the  screen. By first calling wnoutrefresh for each win-
     dow, it is then possible to call doupdate once, resulting in
     only  one  burst  of  output,  with  fewer  total characters
     transmitted and less CPU time used. If the win  argument  to
     wrefresh  is  the  global variable curscr, the screen is im-
     mediately cleared and repainted from scratch.

     The phrase "copies the named window to the  virtual  screen"
     above  is  ambiguous.  What  actually  happens  is  that all
     touched (changed) lines in the window are copied to the vir-
     tual screen. This affects programs that use overlapping win-
     dows; it means that if two windows overlap, you can  refresh

MirBSD #10-current     Printed 2022-12-23                       1

curs_refresh(3)     UNIX Programmer's Manual      curs_refresh(3)

     them in either order and the overlap region will be modified
     only when it is explicitly changed. (But see the section  on
     PORTABILITY  below  for  a  warning  about  exploiting  this

     The wredrawln routine indicates to curses that  some  screen
     lines  are  corrupted  and should be thrown away before any-
     thing is written over them. It touches the  indicated  lines
     (marking  them changed). The routine redrawwin() touches the
     entire window.


     Routines that return an integer return ERR upon failure, and
     OK  (SVr4  only specifies "an integer value other than ERR")
     upon successful completion.

     X/Open does not define any error conditions. In this  imple-

               returns an error if the window pointer is null, or
               if the window is really a pad.

               returns an error if the associated call to touchln
               returns an error.


     Note that refresh and redrawwin may be macros.


     The XSI Curses standard, Issue 4 describes these functions.

     Whether wnoutrefresh() copies to the virtual screen the  en-
     tire  contents  of a window or just its changed portions has
     never been well-documented in historic curses versions  (in-
     cluding SVr4). It might be unwise to rely on either behavior
     in programs that might have to be linked with  other  curses
     implementations.  Instead, you can do an explicit touchwin()
     before the  wnoutrefresh()  call  to  guarantee  an  entire-
     contents copy anywhere.


     curses(3), curs_outopts(3)

MirBSD #10-current     Printed 2022-12-23                       2

Generated on 2022-12-24 01:00:14 by $MirOS: src/scripts/roff2htm,v 1.113 2022/12/21 23:14:31 tg Exp $ — This product includes material provided by mirabilos.

These manual pages and other documentation are copyrighted by their respective writers; their sources are available at the project’s CVSweb, AnonCVS and other mirrors. The rest is Copyright © 2002–2022 MirBSD.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report — diffs preferred.

Kontakt / Impressum & Datenschutzerklärung