* Adds a synchronous jpeg decode for pre-caching purposes

* When the DynamicTextureModule creates a j2k image, pre-cache the decode so that it doesn't stall any client threads.
0.6.3-post-fixes
Teravus Ovares 2009-01-23 11:00:36 +00:00
parent 68978e6e2a
commit 74df9f9c81
3 changed files with 18 additions and 0 deletions

View File

@ -36,5 +36,6 @@ namespace OpenSim.Region.Environment.Interfaces
public interface IJ2KDecoder public interface IJ2KDecoder
{ {
void decode(UUID AssetId, byte[] assetData, DecodedCallback decodedReturn); void decode(UUID AssetId, byte[] assetData, DecodedCallback decodedReturn);
void syncdecode(UUID AssetId, byte[] j2kdata);
} }
} }

View File

@ -146,6 +146,16 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender
} }
} }
/// <summary>
/// Provides a synchronous decode so that caller can be assured that this executes before the next line
/// </summary>
/// <param name="AssetId"></param>
/// <param name="j2kdata"></param>
public void syncdecode(UUID AssetId, byte[] j2kdata)
{
doJ2kDecode(AssetId, j2kdata);
}
#endregion #endregion
/// <summary> /// <summary>

View File

@ -242,6 +242,13 @@ namespace OpenSim.Region.Environment.Modules.Scripting.DynamicTexture
LastAssetID = asset.FullID; LastAssetID = asset.FullID;
IJ2KDecoder cacheLayerDecode = scene.RequestModuleInterface<IJ2KDecoder>();
if (cacheLayerDecode != null)
{
cacheLayerDecode.syncdecode(asset.FullID, asset.Data);
}
cacheLayerDecode = null;
// mostly keep the values from before // mostly keep the values from before
Primitive.TextureEntry tmptex = part.Shape.Textures; Primitive.TextureEntry tmptex = part.Shape.Textures;