.\"***************************************************************************
-.\" Copyright (c) 2008 Free Software Foundation, Inc. *
+.\" Copyright 2021,2022 Thomas E. Dickey *
+.\" Copyright 2008-2015,2017 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_threads.3x,v 1.10 2008/04/05 23:51:41 tom Exp $
+.\" $Id: curs_threads.3x,v 1.31 2022/02/12 20:05:11 tom Exp $
.TH curs_threads 3X ""
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.na
.hy 0
.SH NAME
-\fBuse_screen\fR,
-\fBuse_window\fR - \fBcurses\fR thread support
+\fBcurs_threads\fP \- \fBcurses\fP thread support
.ad
.hy
.SH SYNOPSIS
-\fB#include <curses.h>\fR
+\fB#include <curses.h>\fP
.sp
-\fBtypedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);\fR
-\fBtypedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);\fR
+\fBtypedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);\fP
.br
-\fBint set_escdelay(int size);\fR
+\fBtypedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);\fP
+.sp
+\fBint get_escdelay(void);\fP
.br
-\fBint set_tabsize(int size);\fR
+\fBint set_escdelay(int \fIms\fB);\fR
.br
-\fBint use_screen(SCREEN *scr, NCURSES_WINDOW_CB func, void *data);\fR
+\fBint set_tabsize(int \fIcols\fB);\fR
+.sp
+\fBint use_screen(SCREEN *\fIscr\fB, NCURSES_SCREEN_CB \fIfunc\fB, void *\fIdata\fB);\fR
.br
-\fBint use_window(WINDOW *win, NCURSES_SCREEN_CB func, void *data);\fR
+\fBint use_window(WINDOW *\fIwin\fB, NCURSES_WINDOW_CB \fIfunc\fB, void *\fIdata\fB);\fR
.br
.SH DESCRIPTION
This implementation can be configured to provide rudimentary support
for multi-threaded applications.
-This makes a different set of libraries, e.g., \fIlibncursest\fP since
+This makes a different set of libraries, e.g., \fBlibncursest\fP since
the binary interfaces are different.
.PP
Rather than modify the interfaces to pass a thread specifier to
use of the global variables when configured for threading.
.PP
In addition to forcing access to members of the \fBWINDOW\fP structure
-to be via functions (see \fBcurs_opaque\fP(3x)),
+to be via functions (see \fBcurs_opaque\fP(3X)),
it makes functions of the common global variables,
e.g.,
COLORS,
use the \fBset_escdelay\fP or \fBset_tabsize\fP functions.
Other global variables are not modifiable.
.PP
+The \fBget_escdelay\fP function returns the value for ESCDELAY.
+.PP
The \fBuse_window\fP and \fBuse_screen\fP functions provide coarse
granularity mutexes for their respective \fBWINDOW\fP and \fBSCREEN\fP
parameters, and call a user-supplied function,
altered during operation.
In addition,
they use data which is maintained within a hierarchy of scopes.
-.RS
-.TP 3
--
+.RS 3
+.bP
global data, e.g., used in the low-level terminfo or termcap interfaces.
-.TP 3
--
-terminal data, e.g., associated with a call to \fIset_curterm\fP.
+.bP
+terminal data, e.g., associated with a call to \fBset_curterm\fP.
The terminal data are initialized when screens are created.
-.TP 3
--
-screen data, e.g., associated with a call to \fInewterm\fP or \fIinitscr\fP.
-.TP 3
--
-window data, e.g., associated with a call to \fInewwin\fP or \fIsubwin\fP.
+.bP
+screen data, e.g., associated with a call to \fBnewterm\fP or \fBinitscr\fP.
+.bP
+window data, e.g., associated with a call to \fBnewwin\fP or \fBsubwin\fP.
Windows are associated with screens.
Pads are not necessarily associated with a particular screen.
.IP
Most curses applications operate on one or more windows within a single screen.
-.TP 3
--
+.bP
reentrant, i.e., it uses only the data passed as parameters.
.RE
.PP
COLOR_PAIR/reentrant
COLOR_PAIRS/screen (readonly)
COLS/screen (readonly)
-ESCDELAY/screen (readonly, see \fIset_escdelay\fP)
+ESCDELAY/screen (readonly, see \fBset_escdelay\fP)
LINES/screen (readonly)
PAIR_NUMBER/reentrant
PC/global
clrtoeol/window (stdscr)
color_content/screen
color_set/window (stdscr)
-copywin/window (both source, target)
+copywin/window locks(source, target)
cur_term/terminal
curs_set/screen
curscr/screen (readonly)
delay_output/screen
delch/window (stdscr)
deleteln/window (stdscr)
-delscreen/reentrant
-delwin/reentrant
+delscreen/global locks(screenlist, screen)
+delwin/global locks(windowlist)
derwin/screen
doupdate/screen
-dupwin/screen
+dupwin/screen locks(window)
echo/screen
echo_wchar/window (stdscr)
echochar/window (stdscr)
inchstr/window (stdscr)
init_color/screen
init_pair/screen
-initscr/global
+initscr/global locks(screenlist)
innstr/window (stdscr)
innwstr/window (stdscr)
ins_nwstr/window (stdscr)
mvwvline/window
mvwvline_set/window
napms/reentrant
-newpad/reentrant
+newpad/global locks(windowlist)
newscr/screen (readonly)
-newterm/global
-newwin/reentrant
+newterm/global locks(screenlist)
+newwin/global locks(windowlist)
nl/screen
nocbreak/screen
nodelay/window
numfnames/global (readonly)
numnames/global (readonly)
ospeed/global
-overlay/window (both source, target)
-overwrite/window (both source, target)
+overlay/window locks(source, target)
+overwrite/window locks(source, target)
pair_content/screen
pecho_wchar/screen
pechochar/screen
reset_prog_mode/screen
reset_shell_mode/screen
resetty/terminal
-resize_term/screen
+resize_term/screen locks(windowlist)
resizeterm/screen
restartterm/screen
ripoffline/global (static data)
set_curterm/screen
set_escdelay/screen
set_tabsize/screen
-set_term/reentrant
+set_term/global locks(screenlist, screen)
setcchar/reentrant
setscrreg/window (stdscr)
setupterm/global
use_env/global (static data)
use_extended_names/global (static data)
use_legacy_coding/screen
-use_screen/reentrant
-use_window/reentrant
+use_screen/global locks(screenlist, screen)
+use_window/global locks(windowlist, window)
vid_attr/screen
vid_puts/screen
vidattr/screen
wget_wstr/screen (input-operation)
wgetbkgrnd/window
wgetch/screen (input-operation)
+wgetdelay/window
wgetn_wstr/screen (input-operation)
wgetnstr/screen (input-operation)
wgetparent/window
wprintw/window
wredrawln/window
wrefresh/screen
-wresize/window
+wresize/window locks(windowlist)
wscanw/screen
wscrl/window
wsetscrreg/window
.TE
.\" ***************************************************************************
.SH RETURN VALUE
-These functions all return TRUE or FALSE, except as noted.
+These functions all return \fBTRUE\fP or \fBFALSE\fP, except as noted.
.SH NOTES
Both a macro and a function are provided for each name.
.SH PORTABILITY
It is recommended that any code depending on ncurses extensions
be conditioned using NCURSES_VERSION.
.SH SEE ALSO
-\fBcurses\fR(3X),
-\fBcurs_opaque\fR(3X)
-.\"#
-.\"# The following sets edit modes for GNU EMACS
-.\"# Local Variables:
-.\"# mode:nroff
-.\"# fill-column:79
-.\"# End:
+\fBcurses\fP(3X),
+\fBcurs_opaque\fP(3X),
+\fBcurs_variables\fP(3X).