aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs28
1 files changed, 24 insertions, 4 deletions
diff --git a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs
index 0d3cc23..00a247c 100644
--- a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs
+++ b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs
@@ -53,8 +53,9 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
53 /// </summary> 53 /// </summary>
54 private readonly Dictionary<UUID, OpenJPEG.J2KLayerInfo[]> m_cacheddecode = new Dictionary<UUID, OpenJPEG.J2KLayerInfo[]>(); 54 private readonly Dictionary<UUID, OpenJPEG.J2KLayerInfo[]> m_cacheddecode = new Dictionary<UUID, OpenJPEG.J2KLayerInfo[]>();
55 private bool OpenJpegFail = false; 55 private bool OpenJpegFail = false;
56 private readonly string CacheFolder = Util.dataDir() + "/j2kDecodeCache"; 56 private string CacheFolder = Util.dataDir() + "/j2kDecodeCache";
57 private readonly J2KDecodeFileCache fCache; 57 private int CacheTimeout = 60;
58 private J2KDecodeFileCache fCache;
58 59
59 /// <summary> 60 /// <summary>
60 /// List of client methods to notify of results of decode 61 /// List of client methods to notify of results of decode
@@ -63,11 +64,19 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
63 64
64 public J2KDecoderModule() 65 public J2KDecoderModule()
65 { 66 {
66 fCache = new J2KDecodeFileCache(CacheFolder);
67 } 67 }
68 68
69 public void Initialise(Scene scene, IConfigSource source) 69 public void Initialise(Scene scene, IConfigSource source)
70 { 70 {
71 IConfig j2kConfig = source.Configs["J2KDecoder"];
72 if (j2kConfig != null)
73 {
74 CacheFolder = j2kConfig.GetString("CacheDir", CacheFolder);
75 CacheTimeout = j2kConfig.GetInt("CacheTimeout", CacheTimeout);
76 }
77
78 fCache = new J2KDecodeFileCache(CacheFolder, CacheTimeout);
79
71 scene.RegisterModuleInterface<IJ2KDecoder>(this); 80 scene.RegisterModuleInterface<IJ2KDecoder>(this);
72 } 81 }
73 82
@@ -353,6 +362,7 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
353 public class J2KDecodeFileCache 362 public class J2KDecodeFileCache
354 { 363 {
355 private readonly string m_cacheDecodeFolder; 364 private readonly string m_cacheDecodeFolder;
365 private readonly int m_cacheTimeout;
356 private bool enabled = true; 366 private bool enabled = true;
357 367
358 private static readonly ILog m_log 368 private static readonly ILog m_log
@@ -362,9 +372,10 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
362 /// Creates a new instance of a file cache 372 /// Creates a new instance of a file cache
363 /// </summary> 373 /// </summary>
364 /// <param name="pFolder">base folder for the cache. Will be created if it doesn't exist</param> 374 /// <param name="pFolder">base folder for the cache. Will be created if it doesn't exist</param>
365 public J2KDecodeFileCache(string pFolder) 375 public J2KDecodeFileCache(string pFolder, int timeout)
366 { 376 {
367 m_cacheDecodeFolder = pFolder; 377 m_cacheDecodeFolder = pFolder;
378 m_cacheTimeout = timeout;
368 if (!Directory.Exists(pFolder)) 379 if (!Directory.Exists(pFolder))
369 { 380 {
370 Createj2KCacheFolder(pFolder); 381 Createj2KCacheFolder(pFolder);
@@ -426,6 +437,15 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
426 return false; 437 return false;
427 } 438 }
428 439
440 DateTime creationTime = File.GetCreationTime(filename);
441 TimeSpan fileAge = DateTime.Now - creationTime;
442
443 if (m_cacheTimeout != 0 && fileAge >= TimeSpan.FromMinutes(m_cacheTimeout))
444 {
445 File.Delete(filename);
446 return false;
447 }
448
429 string readResult = string.Empty; 449 string readResult = string.Empty;
430 450
431 try 451 try