##// END OF EJS Templates
Trap AttributeError in window.flip() under linux - pyglet bug.
Fernando Perez -
Show More
@@ -1,9 +1,12 b''
1 # encoding: utf-8
1 # encoding: utf-8
2
3 """
2 """
4 Enable pyglet to be used interacive by setting PyOS_InputHook.
3 Enable pyglet to be used interacive by setting PyOS_InputHook.
5
4
6 Authors: Nicolas P. Rougier
5 Authors
6 -------
7
8 * Nicolas P. Rougier
9 * Fernando Perez
7 """
10 """
8
11
9 #-----------------------------------------------------------------------------
12 #-----------------------------------------------------------------------------
@@ -24,26 +27,45 b' import time'
24 from timeit import default_timer as clock
27 from timeit import default_timer as clock
25 import pyglet
28 import pyglet
26
29
27 if os.name == 'posix':
28 import select
29 elif sys.platform == 'win32':
30 import msvcrt
31
32 #-----------------------------------------------------------------------------
30 #-----------------------------------------------------------------------------
33 # Code
31 # Platform-dependent imports and functions
34 #-----------------------------------------------------------------------------
32 #-----------------------------------------------------------------------------
35
33
36 def stdin_ready():
37 if os.name == 'posix':
34 if os.name == 'posix':
35 import select
36
37 def stdin_ready():
38 infds, outfds, erfds = select.select([sys.stdin],[],[],0)
38 infds, outfds, erfds = select.select([sys.stdin],[],[],0)
39 if infds:
39 if infds:
40 return True
40 return True
41 else:
41 else:
42 return False
42 return False
43
43 elif sys.platform == 'win32':
44 elif sys.platform == 'win32':
45 import msvcrt
46
47 def stdin_ready():
44 return msvcrt.kbhit()
48 return msvcrt.kbhit()
45
49
46
50
51 # On linux only, window.flip() has a bug that causes an AttributeError on
52 # window close. For details, see:
53 # http://groups.google.com/group/pyglet-users/browse_thread/thread/47c1aab9aa4a3d23/c22f9e819826799e?#c22f9e819826799e
54
55 if sys.platform.startswith('linux'):
56 def flip(window):
57 try:
58 window.flip()
59 except AttributeError:
60 pass
61 else:
62 def flip(window):
63 window.flip()
64
65 #-----------------------------------------------------------------------------
66 # Code
67 #-----------------------------------------------------------------------------
68
47 def inputhook_pyglet():
69 def inputhook_pyglet():
48 """Run the pyglet event loop by processing pending events only.
70 """Run the pyglet event loop by processing pending events only.
49
71
@@ -62,7 +84,7 b' def inputhook_pyglet():'
62 window.switch_to()
84 window.switch_to()
63 window.dispatch_events()
85 window.dispatch_events()
64 window.dispatch_event('on_draw')
86 window.dispatch_event('on_draw')
65 window.flip()
87 flip(window)
66
88
67 # We need to sleep at this point to keep the idle CPU load
89 # We need to sleep at this point to keep the idle CPU load
68 # low. However, if sleep to long, GUI response is poor. As
90 # low. However, if sleep to long, GUI response is poor. As
General Comments 0
You need to be logged in to leave comments. Login now