aboutsummaryrefslogtreecommitdiff
path: root/Emby.Drawing/ImageProcessor.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-10-31 00:28:23 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-10-31 00:28:23 -0400
commit3bf72b71b35c031e89a1b45ddc717e3d5d45afb0 (patch)
tree35ee919a685c70fff79125a98a4286c5a529422c /Emby.Drawing/ImageProcessor.cs
parent0579f245e47334094c03583defc1baf434de2b36 (diff)
consolidate internal interfaces
Diffstat (limited to 'Emby.Drawing/ImageProcessor.cs')
-rw-r--r--Emby.Drawing/ImageProcessor.cs51
1 files changed, 17 insertions, 34 deletions
diff --git a/Emby.Drawing/ImageProcessor.cs b/Emby.Drawing/ImageProcessor.cs
index 3235b7efa..47c9357fd 100644
--- a/Emby.Drawing/ImageProcessor.cs
+++ b/Emby.Drawing/ImageProcessor.cs
@@ -780,40 +780,38 @@ namespace Emby.Drawing
// All enhanced images are saved as png to allow transparency
var enhancedImagePath = GetCachePath(EnhancedImageCachePath, cacheGuid + ".png");
- var semaphore = GetLock(enhancedImagePath);
-
- await semaphore.WaitAsync().ConfigureAwait(false);
-
// Check again in case of contention
if (_fileSystem.FileExists(enhancedImagePath))
{
- semaphore.Release();
return enhancedImagePath;
}
- var imageProcessingLockTaken = false;
+ _fileSystem.CreateDirectory(Path.GetDirectoryName(enhancedImagePath));
- try
- {
- _fileSystem.CreateDirectory(Path.GetDirectoryName(enhancedImagePath));
+ var tmpPath = Path.Combine(_appPaths.TempDirectory, Path.ChangeExtension(Guid.NewGuid().ToString(), Path.GetExtension(enhancedImagePath)));
+ _fileSystem.CreateDirectory(Path.GetDirectoryName(tmpPath));
- await _imageProcessingSemaphore.WaitAsync().ConfigureAwait(false);
+ await _imageProcessingSemaphore.WaitAsync().ConfigureAwait(false);
- imageProcessingLockTaken = true;
+ try
+ {
+ await ExecuteImageEnhancers(supportedEnhancers, originalImagePath, tmpPath, item, imageType, imageIndex).ConfigureAwait(false);
- await ExecuteImageEnhancers(supportedEnhancers, originalImagePath, enhancedImagePath, item, imageType, imageIndex).ConfigureAwait(false);
+ try
+ {
+ File.Copy(tmpPath, enhancedImagePath, true);
+ }
+ catch
+ {
+
+ }
}
finally
{
- if (imageProcessingLockTaken)
- {
- _imageProcessingSemaphore.Release();
- }
-
- semaphore.Release();
+ _imageProcessingSemaphore.Release();
}
- return enhancedImagePath;
+ return tmpPath;
}
/// <summary>
@@ -839,21 +837,6 @@ namespace Emby.Drawing
}
/// <summary>
- /// The _semaphoreLocks
- /// </summary>
- private readonly ConcurrentDictionary<string, SemaphoreSlim> _semaphoreLocks = new ConcurrentDictionary<string, SemaphoreSlim>();
-
- /// <summary>
- /// Gets the lock.
- /// </summary>
- /// <param name="filename">The filename.</param>
- /// <returns>System.Object.</returns>
- private SemaphoreSlim GetLock(string filename)
- {
- return _semaphoreLocks.GetOrAdd(filename, key => new SemaphoreSlim(1, 1));
- }
-
- /// <summary>
/// Gets the cache path.
/// </summary>
/// <param name="path">The path.</param>