def test_poll(self): if not self.is_interactive: py.test.skip("interactive test only") import time, sys RSDL.EnableUNICODE(1) print print "Keys pressed in the Pygame window give a dot." print " Wait 3 seconds to quit." timeout = time.time() + 3 event = lltype.malloc(RSDL.Event, flavor='raw') try: while True: # busy polling ok = RSDL.PollEvent(event) ok = rffi.cast(lltype.Signed, ok) assert ok >= 0 if ok > 0: c_type = rffi.getintfield(event, 'c_type') if c_type == RSDL.KEYDOWN: sys.stderr.write('.') p = rffi.cast(RSDL.KeyboardEventPtr, event) if rffi.getintfield(p.c_keysym, 'c_sym') == RSDL.K_ESCAPE: print 'Escape key' break timeout = time.time() + 3 else: if time.time() > timeout: break time.sleep(0.05) finally: lltype.free(event, flavor='raw')
def poll_event(self): ok = rffi.cast(lltype.Signed, RSDL.PollEvent(self.event)) return ok > 0