# HG changeset patch # User Emmanuel Gil Peyrot # Date 1397927018 -7200 # Node ID 63440d1e07177eadfd432e01ebe2c735654d974b # Parent 6b76c9ba3975719563ff4eda54111d14c5124daf Fix a segfault happening at exit time on Windows. diff --git a/pytouhou/ui/opengl/renderer.pxd b/pytouhou/ui/opengl/renderer.pxd --- a/pytouhou/ui/opengl/renderer.pxd +++ b/pytouhou/ui/opengl/renderer.pxd @@ -18,6 +18,9 @@ cdef class Texture: cdef GLuint texture, *pointer cdef unsigned short indices[2][65536] + #XXX: keep a reference so that when __dealloc__ is called self.pointer is still valid. + cdef Renderer renderer + cdef class Renderer: cdef TextureManager texture_manager diff --git a/pytouhou/ui/opengl/renderer.pyx b/pytouhou/ui/opengl/renderer.pyx --- a/pytouhou/ui/opengl/renderer.pyx +++ b/pytouhou/ui/opengl/renderer.pyx @@ -61,6 +61,9 @@ cdef class Texture: for i in xrange(2): renderer.indices[key][i] = self.indices[i] + #XXX: keep a reference so that when __dealloc__ is called self.pointer is still valid. + self.renderer = renderer + def __dealloc__(self): if self.texture: glDeleteTextures(1, &self.texture)