mirror of
https://github.com/VARCem/PDCurses.git
synced 2026-09-23 23:35:20 +00:00
napms() should be the core delay routine, rather than delay_output().
Rationale: Per the standard, napms() always waits a given interval, while delay_output() sends pad characters until the interval is reached; if pad characters are unavailable, its behavior is undefined. Some implementations call napms() in that case; ncurses, sadly, does not, at least not for the Linux console. So the use of delay_output() should be discouraged, in general; and if everything is using napms(), it ought to be the function that's used most directly.
This commit is contained in:
8
curses.h
8
curses.h
@@ -18,7 +18,7 @@
|
||||
***************************************************************************
|
||||
*/
|
||||
/*
|
||||
$Id: curses.h,v 1.61 2006/01/03 07:42:28 wmcbrine Exp $
|
||||
$Id: curses.h,v 1.62 2006/01/03 08:32:11 wmcbrine Exp $
|
||||
*/
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
@@ -1667,7 +1667,6 @@ int PDC_CDECL copywin Args(( const WINDOW*, WINDOW*, int, int, int, int, int
|
||||
int PDC_CDECL curs_set Args(( int ));
|
||||
int PDC_CDECL def_prog_mode Args(( void ));
|
||||
int PDC_CDECL def_shell_mode Args(( void ));
|
||||
int PDC_CDECL delay_output Args(( int ));
|
||||
void PDC_CDECL delscreen Args(( SCREEN * ));
|
||||
int PDC_CDECL delwin Args(( WINDOW* ));
|
||||
WINDOW* PDC_CDECL derwin Args(( WINDOW*, int, int, int, int ));
|
||||
@@ -1720,6 +1719,7 @@ int PDC_CDECL mvwinsertln Args(( WINDOW*, int, int ));
|
||||
int PDC_CDECL mvwprintw Args(( WINDOW*, int, int, char*,... ));
|
||||
int PDC_CDECL mvwscanw Args(( WINDOW*, int, int, char*,... ));
|
||||
#endif
|
||||
int PDC_CDECL napms Args(( int ));
|
||||
WINDOW* PDC_CDECL newpad Args(( int, int ));
|
||||
SCREEN* PDC_CDECL newterm Args(( char*, FILE*, FILE* ));
|
||||
WINDOW* PDC_CDECL newwin Args(( int, int, int, int ));
|
||||
@@ -1919,10 +1919,11 @@ int PDC_CDECL PDC_set_line_color Args(( short ));
|
||||
#define clrtobot() wclrtobot( stdscr )
|
||||
#define clrtoeol() wclrtoeol( stdscr )
|
||||
#define color_set(a,b) wcolor_set( stdscr, a, b )
|
||||
#define delay_output(ms) napms( ms )
|
||||
#define delch() wdelch( stdscr )
|
||||
#define deleteln() wdeleteln( stdscr )
|
||||
#define derwin(w,nl,nc,by,bx) subwin((w),(nl),(nc),(by+(w)->_begy),(bx+(w)->_begx))
|
||||
#define draino(ms) delay_output(ms)
|
||||
#define draino(ms) napms( ms )
|
||||
#define echochar(c) (addch((chtype)c)==ERR?ERR:refresh())
|
||||
#define erase() werase( stdscr )
|
||||
#define fixterm() reset_prog_mode()
|
||||
@@ -1996,7 +1997,6 @@ int PDC_CDECL PDC_set_line_color Args(( short ));
|
||||
#define mvwinsnstr(w,y,x,s,n) (wmove( w, y, x )==ERR?ERR:winsnstr(w,s,n))
|
||||
#define mvwinsstr(w,y,x,s) (wmove( w, y, x )==ERR?ERR:winsnstr(w,s,(-1)))
|
||||
#define mvwvline(w,y,x,c,n) (wmove( w, y, x )==ERR?ERR:wvline( w, c, n ))
|
||||
#define napms(ms) delay_output(ms)
|
||||
#define nl() (SP->autocr = TRUE, OK)
|
||||
#define nonl() (SP->autocr = FALSE, OK)
|
||||
#define redrawwin(w) wredrawln((w),0,(w)->_maxy)
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef PDCDEBUG
|
||||
char *rcsid_newdemo = "$Id: newdemo.c,v 1.14 2005/12/08 17:27:08 wmcbrine Exp $";
|
||||
char *rcsid_newdemo = "$Id: newdemo.c,v 1.15 2006/01/03 08:32:12 wmcbrine Exp $";
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_PROTO) && !defined(__STDC__)
|
||||
@@ -410,7 +410,7 @@ chtype save[80], ch;
|
||||
stop = 1;
|
||||
break;
|
||||
}
|
||||
delay_output(100);
|
||||
napms(100);
|
||||
}
|
||||
free(scrollbuf);
|
||||
if (stop)
|
||||
|
||||
24
demos/xmas.c
24
demos/xmas.c
@@ -115,7 +115,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef PDCDEBUG
|
||||
char *rcsid_xmas = "$Id: xmas.c,v 1.7 2005/12/07 01:37:43 wmcbrine Exp $";
|
||||
char *rcsid_xmas = "$Id: xmas.c,v 1.8 2006/01/03 08:32:12 wmcbrine Exp $";
|
||||
#endif
|
||||
|
||||
#include <curses.h>
|
||||
@@ -475,25 +475,25 @@ char **argv;
|
||||
werase(treescrn8);
|
||||
touchwin(treescrn8);
|
||||
refresh();
|
||||
delay_output(1000);
|
||||
napms(1000);
|
||||
boxit();
|
||||
del_msg();
|
||||
delay_output(1000);
|
||||
napms(1000);
|
||||
seas();
|
||||
del_msg();
|
||||
delay_output(1000);
|
||||
napms(1000);
|
||||
greet();
|
||||
del_msg();
|
||||
delay_output(1000);
|
||||
napms(1000);
|
||||
fromwho();
|
||||
del_msg();
|
||||
delay_output(1000);
|
||||
napms(1000);
|
||||
tree();
|
||||
delay_output(1000);
|
||||
napms(1000);
|
||||
balls();
|
||||
delay_output(1000);
|
||||
napms(1000);
|
||||
star();
|
||||
delay_output(1000);
|
||||
napms(1000);
|
||||
strng1();
|
||||
strng2();
|
||||
strng3();
|
||||
@@ -668,14 +668,14 @@ char **argv;
|
||||
mvwaddch(treescrn7, 12, 14, ' ');
|
||||
|
||||
|
||||
delay_output(1000);
|
||||
napms(1000);
|
||||
reindeer();
|
||||
|
||||
touchwin(w_holiday);
|
||||
wrefresh(w_holiday);
|
||||
wrefresh(w_del_msg);
|
||||
|
||||
delay_output(1000);
|
||||
napms(1000);
|
||||
for(loopy = 0;loopy < 50;loopy++)
|
||||
{
|
||||
blinkit();
|
||||
@@ -1209,7 +1209,7 @@ int reindeer Args((void))
|
||||
}
|
||||
}
|
||||
|
||||
delay_output(2000);
|
||||
napms(2000);
|
||||
|
||||
y_pos = 1;
|
||||
|
||||
|
||||
@@ -34,12 +34,11 @@
|
||||
|
||||
/* undefine any macros for functions called by this module if in debug mode */
|
||||
#ifdef PDCDEBUG
|
||||
# undef delay_output
|
||||
# undef wrefresh
|
||||
#endif
|
||||
|
||||
#ifdef PDCDEBUG
|
||||
char *rcsid_beep = "$Id: beep.c,v 1.2 2006/01/03 07:34:43 wmcbrine Exp $";
|
||||
char *rcsid_beep = "$Id: beep.c,v 1.3 2006/01/03 08:32:12 wmcbrine Exp $";
|
||||
#endif
|
||||
|
||||
/*man-start*********************************************************************
|
||||
@@ -110,7 +109,7 @@ int PDC_CDECL flash()
|
||||
|
||||
#if defined(DOS) || defined(OS2) || defined(WIN32)
|
||||
PDC_scroll(0, 0, LINES - 1, COLS - 1, 0, A_NORMAL);
|
||||
delay_output( 50 );
|
||||
napms( 50 );
|
||||
PDC_scroll(0, 0, LINES - 1, COLS - 1, 0, A_REVERSE);
|
||||
wrefresh(curscr);
|
||||
return( OK );
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef PDCDEBUG
|
||||
char *rcsid_kernel = "$Id: kernel.c,v 1.9 2006/01/03 07:34:43 wmcbrine Exp $";
|
||||
char *rcsid_kernel = "$Id: kernel.c,v 1.10 2006/01/03 08:32:12 wmcbrine Exp $";
|
||||
#endif
|
||||
|
||||
RIPPEDOFFLINE linesripped[5];
|
||||
@@ -472,9 +472,33 @@ int ms;
|
||||
#endif
|
||||
/***********************************************************************/
|
||||
{
|
||||
PDC_LOG(("napms() - called: ms=%d\n",ms));
|
||||
PDC_LOG(("napms() - called: ms=%d\n",ms));
|
||||
|
||||
return(delay_output(ms));
|
||||
#if defined(WIN32)
|
||||
Sleep(ms);
|
||||
#elif (defined(TC) || defined(__WATCOMC__)) && defined(DOS)
|
||||
delay( ms );
|
||||
#elif defined(PC)
|
||||
PDC_usleep( ms );
|
||||
#elif defined(OS2)
|
||||
# if defined(EMX)
|
||||
_sleep2(ms);
|
||||
# else
|
||||
DosSleep(ms);
|
||||
# endif
|
||||
#elif defined(DOS) && defined(MSC)
|
||||
PDC_usleep((clock_t)ms);
|
||||
#elif defined(DOS) && defined(NDP)
|
||||
clock_t goal;
|
||||
goal = ms + (float)( (float)clock()/(float)CLOCKS_PER_SEC )*1000;
|
||||
while (goal > (float)( (float)clock()/(float)CLOCKS_PER_SEC )*1000)
|
||||
;
|
||||
#elif defined(UNIX) || defined(__DJGPP__)
|
||||
usleep(1000*ms);
|
||||
#elif defined(XCURSES)
|
||||
PDC_usleep(ms*1000);
|
||||
#endif
|
||||
return OK;
|
||||
}
|
||||
/***********************************************************************/
|
||||
#ifdef HAVE_PROTO
|
||||
@@ -485,7 +509,7 @@ int ms;
|
||||
#endif
|
||||
/***********************************************************************/
|
||||
{
|
||||
PDC_LOG(("draino() - called: ms=%d\n",ms));
|
||||
PDC_LOG(("draino() - called: ms=%d\n",ms));
|
||||
|
||||
return(delay_output(ms));
|
||||
return napms(ms);
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef PDCDEBUG
|
||||
char *rcsid_util = "$Id: util.c,v 1.11 2006/01/03 08:07:33 wmcbrine Exp $";
|
||||
char *rcsid_util = "$Id: util.c,v 1.12 2006/01/03 08:32:12 wmcbrine Exp $";
|
||||
#endif
|
||||
|
||||
/*man-start*********************************************************************
|
||||
@@ -322,31 +322,7 @@ int ms;
|
||||
{
|
||||
PDC_LOG(("delay_output() - called: ms %d\n",ms));
|
||||
|
||||
#if defined(WIN32)
|
||||
Sleep(ms);
|
||||
#elif (defined(TC) || defined(__WATCOMC__)) && defined(DOS)
|
||||
delay( ms );
|
||||
#elif defined(PC)
|
||||
PDC_usleep( ms );
|
||||
#elif defined(OS2)
|
||||
# if defined(EMX)
|
||||
_sleep2(ms);
|
||||
# else
|
||||
DosSleep(ms);
|
||||
# endif
|
||||
#elif defined(DOS) && defined(MSC)
|
||||
PDC_usleep((clock_t)ms);
|
||||
#elif defined(DOS) && defined(NDP)
|
||||
clock_t goal;
|
||||
goal = ms + (float)( (float)clock()/(float)CLOCKS_PER_SEC )*1000;
|
||||
while (goal > (float)( (float)clock()/(float)CLOCKS_PER_SEC )*1000)
|
||||
;
|
||||
#elif defined(UNIX) || defined(__DJGPP__)
|
||||
usleep(1000*ms);
|
||||
#elif defined(XCURSES)
|
||||
PDC_usleep(ms*1000);
|
||||
#endif
|
||||
return OK;
|
||||
return napms(ms);
|
||||
}
|
||||
/***********************************************************************/
|
||||
#ifdef HAVE_PROTO
|
||||
|
||||
@@ -236,7 +236,7 @@ XtInputId *id;
|
||||
say("CURSES_FLASH received from child\n");
|
||||
#if 0
|
||||
XFillRectangle(XCURSESDISPLAY,XCURSESWIN,normal_highlight_gc,10,10,XCursesWindowWidth-10,XCursesWindowHeight-10);
|
||||
delay_output(50);
|
||||
napms(50);
|
||||
XFillRectangle(XCURSESDISPLAY,XCURSESWIN,normal_highlight_gc,10,10,XCursesWindowWidth-10,XCursesWindowHeight-10);
|
||||
XCursesDisplayCursor(SP->cursrow,SP->curscol,
|
||||
SP->cursrow,SP->curscol);
|
||||
|
||||
@@ -211,7 +211,7 @@ XtInputId *id;
|
||||
say("CURSES_FLASH received from child\n");
|
||||
#if 0
|
||||
XFillRectangle(XCURSESDISPLAY,XCURSESWIN,normal_highlight_gc,10,10,XCursesWindowWidth-10,XCursesWindowHeight-10);
|
||||
delay_output(50);
|
||||
napms(50);
|
||||
XFillRectangle(XCURSESDISPLAY,XCURSESWIN,normal_highlight_gc,10,10,XCursesWindowWidth-10,XCursesWindowHeight-10);
|
||||
XCursesDisplayCursor(SP->cursrow,SP->curscol,
|
||||
SP->cursrow,SP->curscol);
|
||||
|
||||
Reference in New Issue
Block a user