Skip to content
Snippets Groups Projects
Commit f6819fe2 authored by mano-wii's avatar mano-wii
Browse files

mesh_snap_utilities_line: fix ram and vram leakage

parent cbf69932
No related branches found
No related tags found
No related merge requests found
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
bl_info = { bl_info = {
"name": "Snap_Utilities_Line", "name": "Snap_Utilities_Line",
"author": "Germano Cavalcante", "author": "Germano Cavalcante",
"version": (5, 8, 29), "version": (5, 8, 30),
"blender": (2, 80, 0), "blender": (2, 80, 0),
"location": "View3D > TOOLS > Make Line", "location": "View3D > TOOLS > Make Line",
"description": "Extends Blender Snap controls", "description": "Extends Blender Snap controls",
......
...@@ -288,6 +288,8 @@ class SnapContext(): ...@@ -288,6 +288,8 @@ class SnapContext():
self._offscreen.free() self._offscreen.free()
# Some objects may still be being referenced # Some objects may still be being referenced
for snap_obj in self.snap_objects: for snap_obj in self.snap_objects:
if len(snap_obj.data) == 2:
snap_obj.data[1].free()
del snap_obj.data del snap_obj.data
del snap_obj.mat del snap_obj.mat
del snap_obj del snap_obj
...@@ -306,6 +308,7 @@ class SnapContext(): ...@@ -306,6 +308,7 @@ class SnapContext():
def tag_update_drawn_snap_object(self, snap_obj): def tag_update_drawn_snap_object(self, snap_obj):
if len(snap_obj.data) > 1: if len(snap_obj.data) > 1:
snap_obj.data[1].free()
del snap_obj.data[1:] del snap_obj.data[1:]
#self.update_all() #self.update_all()
# Update on next snap_get call # # Update on next snap_get call #
...@@ -319,6 +322,7 @@ class SnapContext(): ...@@ -319,6 +322,7 @@ class SnapContext():
snap_vert = self._snap_mode & VERT != 0 snap_vert = self._snap_mode & VERT != 0
snap_edge = self._snap_mode & EDGE != 0 snap_edge = self._snap_mode & EDGE != 0
snap_face = self._snap_mode & FACE != 0 snap_face = self._snap_mode & FACE != 0
snap_obj.data[1].free()
snap_obj.data[1] = GPU_Indices_Mesh(snap_obj.data[0], snap_face, snap_edge, snap_vert) snap_obj.data[1] = GPU_Indices_Mesh(snap_obj.data[0], snap_face, snap_edge, snap_vert)
_Internal.gpu_Indices_restore_state() _Internal.gpu_Indices_restore_state()
......
...@@ -386,12 +386,18 @@ class GPU_Indices_Mesh(): ...@@ -386,12 +386,18 @@ class GPU_Indices_Mesh():
def get_loosevert_index(self, index): def get_loosevert_index(self, index):
return self.looseverts[index] return self.looseverts[index]
def free(self):
def __del__(self):
if len(self.users) == 1: if len(self.users) == 1:
GPU_Indices_Mesh._Hash.pop(obj.data) GPU_Indices_Mesh._Hash.pop(self.obj.data)
del self.batch_tris
self.user.remove(self) del self.batch_edges
del self.batch_lverts
del self.verts_co
del self.tri_verts
del self.edge_verts
del self.looseverts
self.users.remove(self)
#print('mesh_del', self.obj.name) #print('mesh_del', self.obj.name)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment