diff --git a/OpenSim/Region/Environment/Interfaces/IJ2KDecoder.cs b/OpenSim/Region/Environment/Interfaces/IJ2KDecoder.cs index 44b9289139..2a37195ab5 100644 --- a/OpenSim/Region/Environment/Interfaces/IJ2KDecoder.cs +++ b/OpenSim/Region/Environment/Interfaces/IJ2KDecoder.cs @@ -36,5 +36,6 @@ namespace OpenSim.Region.Environment.Interfaces public interface IJ2KDecoder { void decode(UUID AssetId, byte[] assetData, DecodedCallback decodedReturn); + void syncdecode(UUID AssetId, byte[] j2kdata); } } diff --git a/OpenSim/Region/Environment/Modules/Agent/TextureSender/J2KDecoderModule.cs b/OpenSim/Region/Environment/Modules/Agent/TextureSender/J2KDecoderModule.cs index 2a565eee8f..53e66fca61 100644 --- a/OpenSim/Region/Environment/Modules/Agent/TextureSender/J2KDecoderModule.cs +++ b/OpenSim/Region/Environment/Modules/Agent/TextureSender/J2KDecoderModule.cs @@ -146,6 +146,16 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender } } + /// + /// Provides a synchronous decode so that caller can be assured that this executes before the next line + /// + /// + /// + public void syncdecode(UUID AssetId, byte[] j2kdata) + { + doJ2kDecode(AssetId, j2kdata); + } + #endregion /// diff --git a/OpenSim/Region/Environment/Modules/Scripting/DynamicTexture/DynamicTextureModule.cs b/OpenSim/Region/Environment/Modules/Scripting/DynamicTexture/DynamicTextureModule.cs index e9fe373288..0974f0276d 100644 --- a/OpenSim/Region/Environment/Modules/Scripting/DynamicTexture/DynamicTextureModule.cs +++ b/OpenSim/Region/Environment/Modules/Scripting/DynamicTexture/DynamicTextureModule.cs @@ -242,6 +242,13 @@ namespace OpenSim.Region.Environment.Modules.Scripting.DynamicTexture LastAssetID = asset.FullID; + IJ2KDecoder cacheLayerDecode = scene.RequestModuleInterface(); + if (cacheLayerDecode != null) + { + cacheLayerDecode.syncdecode(asset.FullID, asset.Data); + } + cacheLayerDecode = null; + // mostly keep the values from before Primitive.TextureEntry tmptex = part.Shape.Textures;