summaryrefslogtreecommitdiffstats
path: root/Lib/lib-stdwin/stdwinq.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1991-08-16 13:28:28 (GMT)
committerGuido van Rossum <guido@python.org>1991-08-16 13:28:28 (GMT)
commit7045dd04d760105f9ddcc23fad1939c3a071f4bc (patch)
tree65035fcba1c5a284306d0b88afcc70a5f5b84d36 /Lib/lib-stdwin/stdwinq.py
parent784ca6c835b6e872313532b2df482671d7c68916 (diff)
downloadcpython-7045dd04d760105f9ddcc23fad1939c3a071f4bc.zip
cpython-7045dd04d760105f9ddcc23fad1939c3a071f4bc.tar.gz
cpython-7045dd04d760105f9ddcc23fad1939c3a071f4bc.tar.bz2
Initial revision
Diffstat (limited to 'Lib/lib-stdwin/stdwinq.py')
-rw-r--r--Lib/lib-stdwin/stdwinq.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/Lib/lib-stdwin/stdwinq.py b/Lib/lib-stdwin/stdwinq.py
new file mode 100644
index 0000000..af72986
--- /dev/null
+++ b/Lib/lib-stdwin/stdwinq.py
@@ -0,0 +1,53 @@
+# Replacements for getevent() and pollevent(),
+# and new functions ungetevent() and sync().
+
+
+# Every library module should ideally use this instead of
+# stdwin.{get,poll}event(), so applications can use the services
+# of ungetevent() and sync().
+
+
+import stdwin
+
+
+# Events read ahead are stored in this queue.
+#
+queue = []
+
+
+# Replacement for getevent().
+#
+def getevent():
+ if queue:
+ event = queue[0]
+ del queue[0]
+ return event
+ else:
+ return stdwin.getevent()
+
+
+# Replacement for pollevent().
+#
+def pollevent():
+ if queue:
+ return getevent()
+ else:
+ return stdwin.pollevent()
+
+
+# Push an event back in the queue.
+#
+def ungetevent(event):
+ queue.insert(0, event)
+
+
+# Synchronize the display. It turns out that this is the way to
+# force STDWIN to call XSync(), which some (esoteric) applications need.
+# (This is stronger than just flushing -- it actually waits for a
+# positive response from the X server on the last command issued.)
+#
+def sync():
+ while 1:
+ event = stdwin.pollevent()
+ if not event: break
+ queue.append(event)