mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 01:35:46 +08:00
Maybe slightly reduce warp3d memory leakage by disposing of decoded bitmap in Warp3DImageModule.GetTexture()
However, this still appears to be leaking massively, at least for me. Possible cause is warp3D using GDI objects internally and not disposing of them.
This commit is contained in:
@@ -189,6 +189,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
|
||||
}
|
||||
|
||||
WarpRenderer renderer = new WarpRenderer();
|
||||
|
||||
renderer.CreateScene(width, height);
|
||||
renderer.Scene.autoCalcNormals = false;
|
||||
|
||||
@@ -243,9 +244,11 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
|
||||
obj.vertexData = null;
|
||||
obj.triangleData = null;
|
||||
}
|
||||
|
||||
renderer.Scene.removeAllObjects();
|
||||
renderer = null;
|
||||
viewport = null;
|
||||
|
||||
m_colors.Clear();
|
||||
GC.Collect();
|
||||
m_log.Debug("[WARP 3D IMAGE MODULE]: GC.Collect()");
|
||||
@@ -637,21 +640,16 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
|
||||
if (asset != null)
|
||||
{
|
||||
IJ2KDecoder imgDecoder = m_scene.RequestModuleInterface<IJ2KDecoder>();
|
||||
Bitmap img = null;
|
||||
|
||||
try
|
||||
{
|
||||
img = (Bitmap)imgDecoder.DecodeToImage(asset);
|
||||
using (Bitmap img = (Bitmap)imgDecoder.DecodeToImage(asset))
|
||||
ret = new warp_Texture(img);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.Warn(string.Format("[WARP 3D IMAGE MODULE]: Failed to decode asset {0}, exception ", id), e);
|
||||
}
|
||||
|
||||
if (img != null)
|
||||
{
|
||||
return new warp_Texture(img);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user