remove a DynamicTexture leak, make it actually return the new texture ID to ossl, do delete previus texture from local cache if temporary,at least on same cases... but still very broken..
parent
ae4266916c
commit
72db6f76b5
|
@ -135,16 +135,15 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
|
||||||
m_reuseableDynamicTextures.Store(
|
m_reuseableDynamicTextures.Store(
|
||||||
GenerateReusableTextureKey(texture.InputCommands, texture.InputParams), newTextureID);
|
GenerateReusableTextureKey(texture.InputCommands, texture.InputParams), newTextureID);
|
||||||
}
|
}
|
||||||
|
updater.newTextureID = newTextureID;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (updater.UpdateTimer == 0)
|
if (updater.UpdateTimer == 0)
|
||||||
{
|
|
||||||
lock (Updaters)
|
|
||||||
{
|
{
|
||||||
if (!Updaters.ContainsKey(updater.UpdaterID))
|
lock (Updaters)
|
||||||
{
|
{
|
||||||
Updaters.Remove(updater.UpdaterID);
|
if (Updaters.ContainsKey(updater.UpdaterID))
|
||||||
|
Updaters.Remove(updater.UpdaterID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -213,7 +212,7 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderPlugins[contentType].AsyncConvertUrl(updater.UpdaterID, url, extraParams);
|
RenderPlugins[contentType].AsyncConvertUrl(updater.UpdaterID, url, extraParams);
|
||||||
return updater.UpdaterID;
|
return updater.newTextureID;
|
||||||
}
|
}
|
||||||
return UUID.Zero;
|
return UUID.Zero;
|
||||||
}
|
}
|
||||||
|
@ -314,7 +313,7 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
|
||||||
updater.UpdatePart(part, (UUID)objReusableTextureUUID);
|
updater.UpdatePart(part, (UUID)objReusableTextureUUID);
|
||||||
}
|
}
|
||||||
|
|
||||||
return updater.UpdaterID;
|
return updater.newTextureID;
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GenerateReusableTextureKey(string data, string extraParams)
|
private string GenerateReusableTextureKey(string data, string extraParams)
|
||||||
|
@ -411,6 +410,7 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
|
||||||
public int Face;
|
public int Face;
|
||||||
public int Disp;
|
public int Disp;
|
||||||
public string Url;
|
public string Url;
|
||||||
|
public UUID newTextureID;
|
||||||
|
|
||||||
public DynamicTextureUpdater()
|
public DynamicTextureUpdater()
|
||||||
{
|
{
|
||||||
|
@ -445,7 +445,14 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Primitive.TextureEntryFace texface = tmptex.CreateFace((uint)Face);
|
Primitive.TextureEntryFace texface = tmptex.GetFace((uint)Face);
|
||||||
|
if(texface == null)
|
||||||
|
tmptex.GetFace((uint)Face);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(texface.TextureID != null && texface.TextureID != UUID.Zero)
|
||||||
|
oldID = texface.TextureID;
|
||||||
|
}
|
||||||
texface.TextureID = textureID;
|
texface.TextureID = textureID;
|
||||||
tmptex.FaceTextures[Face] = texface;
|
tmptex.FaceTextures[Face] = texface;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue