For those who don't know, PDC_breakout is a function called by the refresh
functions to see if they should prematurly stop updating the screen. This
function will stop a refresh when there is a key remaining in the buffer.

Although this is a nice feature in theory, it does encounter problems in
practice.  This function does not work as effectivly if there is an
intentional delay (or long computational task) that does not read keyboard
input.  For example:

{
  char c;
  /* Do intensive computational tasks */
  /* Print result to screen */
  waddstr (stdscr, "Save results to file? (y/n) ");
  refresh();
  do {
     c = getch();
  } while (c != 'y' && c!='n');
}

Although this fragment of code will look innocent, a simple keypress
during the computational tasks will prevent the critical prompt from being
displayed.  

If you want to see a program affected by this bug, head to
http://www.adom.de/, and download any version of Adom before 1.0.0.  If
you press a key while Adom is moving a projectile on the screen, Adom will
appear to make a long delay without updating the screen before returning
to normal.  (This will not appear in the latest version, since the curses
library has been modified to fix this problem.)

What should we do with PDC_breakout?  I think that the function could
easily be removes, but is there a better solution?

=====
Raymond Martineau - [EMAIL PROTECTED]

__________________________________________________
Do You Yahoo!?
Get email alerts & NEW webcam video instant messaging with Yahoo! Messenger. 
http://im.yahoo.com

Reply via email to