Skip to content

Commit

Permalink
#1111: if we cannot create a gl context, detect it sooner, log the er…
Browse files Browse the repository at this point in the history
…ror and skip trying to paint

git-svn-id: https://xpra.org/svn/Xpra/trunk@13292 3bb7dfac-3a0b-4e04-842a-767bc560f471
  • Loading branch information
totaam committed Aug 10, 2016
1 parent 2b88874 commit 3664357
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
11 changes: 8 additions & 3 deletions src/xpra/client/gl/gl_window_backing_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -370,17 +370,22 @@ def gl_init_shaders(self):
log("%s shader initialized", name)

def gl_context(self):
if not self._backing:
b = self._backing
if not b:
log("Error: no OpenGL backing")
return None
if not is_realized(self._backing):
if not is_realized(b):
log.error("Error: OpenGL backing is not realized")
return None
w, h = self.size
if w<=0 or h<=0:
log.error("Error: invalid OpenGL backing size: %ix%i", w, h)
return None
context = GLContextManager(self._backing)
try:
context = GLContextManager(b)
except Exception as e:
log.error("Error: %s", e)
return None
log("%s.gl_context() GL Pixmap backing size: %d x %d, context=%s", self, w, h, context)
return context

Expand Down
14 changes: 9 additions & 5 deletions src/xpra/client/gl/gtk_compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,17 @@ class GLContextManager(object):

def __init__(self, widget):
self.widget = widget
self.gldrawable = gtkgl.widget_get_gl_drawable(widget)
assert self.gldrawable, "failed to get the GL drawable for %s" % widget
self.glcontext = gtkgl.widget_get_gl_context(widget)
assert self.glcontext, "failed to get a GL context from %s" % widget

def __enter__(self):
gldrawable = gtkgl.widget_get_gl_drawable(self.widget)
glcontext = gtkgl.widget_get_gl_context(self.widget)
assert gldrawable.gl_begin(glcontext)
assert self.gldrawable.gl_begin(self.glcontext)

def __exit__(self, exc_type, exc_val, exc_tb):
gldrawable = gtkgl.widget_get_gl_drawable(self.widget)
gldrawable.gl_end()
self.gldrawable.gl_end()

def __repr__(self):
return "gtk2.GLContextManager(%s)" % self.widget

Expand Down

0 comments on commit 3664357

Please sign in to comment.