chiark / gitweb /
Fix crash bug.
authordaid303 <daid303@gmail.com>
Fri, 22 Mar 2013 11:09:12 +0000 (12:09 +0100)
committerdaid303 <daid303@gmail.com>
Fri, 22 Mar 2013 11:09:12 +0000 (12:09 +0100)
Cura/gui/mainWindow.py
Cura/gui/sceneView.py
Cura/gui/util/opengl.py

index 890d83ced978ad5fbe3c8d2a6c47b60862ffe128..cdfd2c234f3fc45813e21f267f1fe71b04278fb4 100644 (file)
@@ -521,6 +521,7 @@ class mainWindow(wx.Frame):
                        profile.putPreference('window_normal_sash', self.normalSashPos)
 
                #HACK: Set the paint function of the glCanvas to nothing so it won't keep refreshing. Which keeps wxWidgets from quiting.
+               print "Closing down"
                self.scene.OnPaint = lambda e : e
                self.Destroy()
 
index cb1916e605b356b31c2628abe102c9f9a3009d8d..d6259589147cc514c2141cb3561c21e5c79b0299 100644 (file)
@@ -107,7 +107,7 @@ class SceneView(openglGui.glGuiPanel):
 
        def OnPaint(self,e):
                if self._objectShader is None:
-                       self._objectShader = opengl.GLShader(self, """
+                       self._objectShader = opengl.GLShader("""
 uniform float cameraDistance;
 varying float light_amount;
 
@@ -175,6 +175,6 @@ void main(void)
                glTranslate(-offset[0], -offset[1], -obj.getMinimum()[2])
                for m in obj._meshList:
                        if m.vbo is None:
-                               m.vbo = opengl.GLVBO(self, m.vertexes, m.normal)
+                               m.vbo = opengl.GLVBO(m.vertexes, m.normal)
                        m.vbo.render()
                glPopMatrix()
index 98da72c88ee5c90357163ebe67826bb9e5f67f98..c46a89405da1a6d6410092c3d8855eb07d6ec96b 100644 (file)
@@ -23,8 +23,7 @@ glutInit()
 platformMesh = None
 
 class GLShader(object):
-       def __init__(self, owner, vertexProgram, fragmentProgram):
-               self._owner = owner
+       def __init__(self, vertexProgram, fragmentProgram):
                try:
                        self._vertexProgram = shaders.compileShader(vertexProgram, GL_VERTEX_SHADER)
                        self._fragmentProgram = shaders.compileShader(fragmentProgram, GL_FRAGMENT_SHADER)
@@ -42,7 +41,7 @@ class GLShader(object):
                shaders.glUseProgram(0)
 
        def release(self):
-               if self._program != None:
+               if self._program is not None:
                        shaders.glDeleteShader(self._vertexProgram)
                        shaders.glDeleteShader(self._fragmentProgram)
                        glDeleteProgram(self._program)
@@ -54,14 +53,12 @@ class GLShader(object):
 
        def __del__(self):
                if self._program is not None and bool(glDeleteProgram):
-                       print "OpenGL shader was not properly cleaned, trying to clean it up now."
-                       self._owner.glReleaseList.append(self)
+                       print "Shader was not properly released!"
 
 class GLVBO(object):
-       def __init__(self, owner, vertexArray, normalArray):
+       def __init__(self, vertexArray, normalArray):
                self._buffer = glGenBuffers(1)
                self._size = len(vertexArray)
-               self._owner = owner
                glBindBuffer(GL_ARRAY_BUFFER, self._buffer)
                glBufferData(GL_ARRAY_BUFFER, numpy.concatenate((vertexArray, normalArray), 1), GL_STATIC_DRAW)
                glBindBuffer(GL_ARRAY_BUFFER, 0)
@@ -86,12 +83,12 @@ class GLVBO(object):
 
        def release(self):
                if self._buffer is not None:
-                       glDeleteBuffers(self._buffer, 1)
+                       glDeleteBuffers(1, [self._buffer])
                        self._buffer = None
 
        def __del__(self):
                if self._buffer is not None and bool(glDeleteBuffers):
-                       self._owner.glReleaseList.append(self)
+                       print "VBO was not properly released!"
 
 def DrawMachine(machineSize):
        glDisable(GL_LIGHTING)