From d3b013be1cdbf2c89847a3e900a6eeacdad5486e Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sun, 25 May 2008 02:39:58 +0000 Subject: * Releases Pinned vertex/index list in ODE on next mesh request. --- OpenSim/Region/Physics/Meshing/Mesh.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/Physics/Meshing') diff --git a/OpenSim/Region/Physics/Meshing/Mesh.cs b/OpenSim/Region/Physics/Meshing/Mesh.cs index 1b0444b..652bbd7 100644 --- a/OpenSim/Region/Physics/Meshing/Mesh.cs +++ b/OpenSim/Region/Physics/Meshing/Mesh.cs @@ -37,7 +37,8 @@ namespace OpenSim.Region.Physics.Meshing { public List vertices; public List triangles; - + GCHandle pinnedVirtexes; + GCHandle pinnedIndex; public float[] normals; public Mesh() @@ -164,7 +165,7 @@ namespace OpenSim.Region.Physics.Meshing result[3*i + 1] = v.Y; result[3*i + 2] = v.Z; } - GCHandle.Alloc(result, GCHandleType.Pinned); + pinnedVirtexes = GCHandle.Alloc(result, GCHandleType.Pinned); return result; } @@ -184,10 +185,17 @@ namespace OpenSim.Region.Physics.Meshing public int[] getIndexListAsIntLocked() { int[] result = getIndexListAsInt(); - GCHandle.Alloc(result, GCHandleType.Pinned); + pinnedIndex = GCHandle.Alloc(result, GCHandleType.Pinned); return result; } + public void releasePinned() + { + pinnedVirtexes.Free(); + pinnedIndex.Free(); + + } + public void Append(Mesh newMesh) { -- cgit v1.1