Skip to content
Snippets Groups Projects
Commit b057ced7 authored by Paul McCarthy's avatar Paul McCarthy
Browse files

GLObject/DisplayOpts instances call their base class destroy method,

and/or clear all refs. The order of execution in destroy methods is
important.
parent 89c8e36b
No related branches found
No related tags found
No related merge requests found
...@@ -62,12 +62,14 @@ class ModelOpts(fsldisplay.DisplayOpts): ...@@ -62,12 +62,14 @@ class ModelOpts(fsldisplay.DisplayOpts):
def destroy(self): def destroy(self):
fsldisplay.DisplayOpts.destroy(self)
self.overlayList.removeListener('overlays', self.name) self.overlayList.removeListener('overlays', self.name)
for overlay in self.overlayList: for overlay in self.overlayList:
overlay.removeListener('name', self.name) overlay.removeListener('name', self.name)
fsldisplay.DisplayOpts.destroy(self)
def getReferenceImage(self): def getReferenceImage(self):
"""Overrides :meth:`.DisplayOpts.getReferenceIamge`. """Overrides :meth:`.DisplayOpts.getReferenceIamge`.
......
...@@ -71,12 +71,13 @@ class VectorOpts(volumeopts.ImageOpts): ...@@ -71,12 +71,13 @@ class VectorOpts(volumeopts.ImageOpts):
def destroy(self): def destroy(self):
volumeopts.ImageOpts.destroy(self)
self.overlayList.removeListener('overlays', self.name) self.overlayList.removeListener('overlays', self.name)
for overlay in self.overlayList: for overlay in self.overlayList:
overlay.removeListener('name', self.name) overlay.removeListener('name', self.name)
volumeopts.ImageOpts.destroy(self)
def __overlayListChanged(self, *a): def __overlayListChanged(self, *a):
"""Called when the overlay list changes. Updates the ``modulate`` """Called when the overlay list changes. Updates the ``modulate``
......
...@@ -39,6 +39,7 @@ class GLLabel(globject.GLImageObject): ...@@ -39,6 +39,7 @@ class GLLabel(globject.GLImageObject):
self.removeListeners() self.removeListeners()
fslgl.gllabel_funcs.destroy(self) fslgl.gllabel_funcs.destroy(self)
globject.GLImageObject.destroy(self)
def addListeners(self): def addListeners(self):
......
...@@ -205,10 +205,10 @@ class GLLineVector(glvector.GLVector): ...@@ -205,10 +205,10 @@ class GLLineVector(glvector.GLVector):
def destroy(self): def destroy(self):
glvector.GLVector.destroy(self)
fslgl.gllinevector_funcs.destroy(self)
self.displayOpts.removeListener('lineWidth', self.name) self.displayOpts.removeListener('lineWidth', self.name)
fslgl.gllinevector_funcs.destroy(self)
glvector.GLVector.destroy(self)
def getDataResolution(self, xax, yax): def getDataResolution(self, xax, yax):
......
...@@ -42,6 +42,10 @@ class GLModel(globject.GLObject): ...@@ -42,6 +42,10 @@ class GLModel(globject.GLObject):
self._renderTexture.destroy() self._renderTexture.destroy()
fslgl.glmodel_funcs.destroy(self) fslgl.glmodel_funcs.destroy(self)
self.removeListeners() self.removeListeners()
self.overlay = None
self.display = None
self.opts = None
def addListeners(self): def addListeners(self):
......
...@@ -115,6 +115,8 @@ class GLVector(globject.GLImageObject): ...@@ -115,6 +115,8 @@ class GLVector(globject.GLImageObject):
self.removeListeners() self.removeListeners()
globject.GLImageObject.destroy(self)
def addListeners(self): def addListeners(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment