****************************************************************************/
/*
- * $Id: curses.priv.h,v 1.576 2017/06/24 15:08:46 tom Exp $
+ * $Id: curses.priv.h,v 1.583 2017/07/22 23:19:00 tom Exp $
*
* curses.priv.h
*
#ifdef USE_PTHREADS
pthread_mutex_t mutex_curses;
+ pthread_mutex_t mutex_prescreen;
+ pthread_mutex_t mutex_screen;
+ pthread_mutex_t mutex_update;
pthread_mutex_t mutex_tst_tracef;
pthread_mutex_t mutex_tracef;
int nested_tracef;
#define N_RIPS 5
+#ifdef USE_PTHREADS
+typedef struct _prescreen_list {
+ struct _prescreen_list *next;
+ pthread_t id;
+ struct screen *sp;
+} PRESCREEN_LIST;
+#endif
+
/*
* Global data which can be swept up into a SCREEN when one is created.
* It may be modified before the next SCREEN is created.
*/
typedef struct {
+#ifdef USE_PTHREADS
+ PRESCREEN_LIST *allocated;
+#else
struct screen * allocated;
+#endif
bool use_env;
bool filter_mode;
attr_t previous_attr;
extern NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen;
+typedef enum {
+ ewInitial = 0,
+ ewRunning,
+ ewSuspend
+} ENDWIN;
+
/*
* The SCREEN structure.
*/
sp->_cbreak = 0; \
sp->_echo = TRUE; \
sp->_fifohead = -1; \
- sp->_endwin = TRUE; \
+ sp->_endwin = ewSuspend; \
sp->_cursor = -1; \
SP_INIT_WINDOWLIST(sp); \
sp->_outch = NCURSES_OUTC_FUNC; \
&& (a).chars[3] == (b).chars[3] \
&& (a).chars[4] == (b).chars[4] \
if_EXT_COLORS(&& (a).ext_color == (b).ext_color))
+#elif CCHARW_MAX > 0
+#error Inconsistent values for CCHARW_MAX
#else
#define CharEq(a,b) (!memcmp(&(a), &(b), sizeof(a)))
#endif
extern NCURSES_EXPORT(int) _nc_setupterm(NCURSES_CONST char *, int, int *, int);
extern NCURSES_EXPORT(void) _nc_tinfo_cmdch(TERMINAL *, int);
+#ifdef USE_PTHREADS
+extern NCURSES_EXPORT(SCREEN *) _nc_find_prescr(void);
+extern NCURSES_EXPORT(void) _nc_forget_prescr(void);
+#else
+#define _nc_find_prescr() _nc_prescreen.allocated
+#define _nc_forget_prescr() _nc_prescreen.allocated = 0
+#endif
+
/* lib_set_term.c */
extern NCURSES_EXPORT(int) _nc_ripoffline(int, int(*)(WINDOW*, int));
#define _nc_export_termtype2(dst,src) /* nothing */
#define _nc_import_termtype2(dst,src) /* nothing */
#define _nc_free_termtype2(t) _nc_free_termtype(t)
+/* also... */
+#define _nc_read_entry2 _nc_read_entry
#endif
#if NO_LEAKS