changeset 30709:71b0b4b5d334

(kbd_buffer_events_waiting): New function.
author Eli Zaretskii <eliz@gnu.org>
date Wed, 09 Aug 2000 12:24:02 +0000
parents 7da70192ab68
children 17973241c0d2
files src/keyboard.c
diffstat 1 files changed, 25 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Wed Aug 09 12:15:06 2000 +0000
+++ b/src/keyboard.c	Wed Aug 09 12:24:02 2000 +0000
@@ -3251,6 +3251,31 @@
 	}
     }
 }
+
+/* Return non-zero if there are any events waiting in the event buffer
+   whose .kind is not no_event.  If DISCARD is non-zero, discard all
+   no_event placeholders up to the first real event.  If there are no
+   real events waiting and DISCARD is non-zero, this function makes
+   the event buffer empty as side effect.  */
+int
+kbd_buffer_events_waiting (discard)
+     int discard;
+{
+  struct input_event *sp;
+  for (sp = kbd_fetch_ptr; sp != kbd_store_ptr; sp++)
+    {
+      if (sp == kbd_buffer + KBD_BUFFER_SIZE)
+	sp = kbd_buffer;
+
+      if (sp->kind != no_event)
+	return 1;
+      if (discard)
+	kbd_fetch_ptr = sp;
+    }
+  if (discard)
+    kbd_fetch_ptr = sp;
+  return 0;
+}
 
 /* Read one event from the event buffer, waiting if necessary.
    The value is a Lisp object representing the event.