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;