From 9809f2702208c3bd2083d23ebfd7106f9769d6dc Mon Sep 17 00:00:00 2001 From: David Vierra Date: Tue, 19 Jan 2016 22:14:29 -1000 Subject: [PATCH] Disable a WorldView's rendering if an error occurs. --- src/mcedit2/worldview/worldview.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/mcedit2/worldview/worldview.py b/src/mcedit2/worldview/worldview.py index f0211ee..1108906 100644 --- a/src/mcedit2/worldview/worldview.py +++ b/src/mcedit2/worldview/worldview.py @@ -564,18 +564,25 @@ class WorldView(QGLWidget): return super(WorldView, self).glDraw(*args, **kwargs) + shouldRender = True def paintGL(self): - with profiler.context("paintGL: %s" % self): - self.frameSamples.append(time.time()) - if self.textureAtlas: - self.textureAtlas.update() + if not self.shouldRender: + return + try: + with profiler.context("paintGL: %s" % self): + self.frameSamples.append(time.time()) + if self.textureAtlas: + self.textureAtlas.update() - with profiler.context("renderScene"): - rendernode.renderScene(self.renderGraph) + with profiler.context("renderScene"): + rendernode.renderScene(self.renderGraph) - self.doneCurrent() - self.bufferSwapDone = False - self.doSwapBuffers.emit() + self.doneCurrent() + self.bufferSwapDone = False + self.doSwapBuffers.emit() + except: + self.shouldRender = False + raise def swapDone(self): self.bufferSwapDone = True