47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
#
|
|
# PyGUI - GL Context - Gtk
|
|
#
|
|
|
|
from GUI.GGLContexts import GLContext as GGLContext
|
|
|
|
try:
|
|
from OpenGL.GL import glFlush
|
|
except ImportError, e:
|
|
raise ImportError("OpenGL support is not available (%s)" % e)
|
|
|
|
class GLContext(GGLContext):
|
|
|
|
_gl_drawable = None
|
|
_gl_context = None
|
|
|
|
def __init__(self, share_group, config, kwds):
|
|
GGLContext.__init__(self, share_group)
|
|
self._gl_config = config._gtk_get_config()
|
|
|
|
def _gtk_get_share(self):
|
|
shared_context = self._get_shared_context()
|
|
if shared_context:
|
|
return shared_context._gtk_get_gl_context()
|
|
else:
|
|
return None
|
|
|
|
def _with_context(self, proc, flush):
|
|
drawable = self._gl_drawable
|
|
if drawable:
|
|
if not drawable.gl_begin(self._gl_context):
|
|
raise ValueError(
|
|
"Unable to make %s the current OpenGL context (gl_begin failed)" % self)
|
|
try:
|
|
self._with_share_group(proc)
|
|
if flush:
|
|
if drawable.is_double_buffered():
|
|
#print "GLContext.with_context: swapping buffers" ###
|
|
drawable.swap_buffers()
|
|
else:
|
|
#print "GLContext.with_context: flushing" ###
|
|
glFlush()
|
|
finally:
|
|
drawable.gl_end()
|
|
#return result
|
|
|