aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs')
-rw-r--r--MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs32
1 files changed, 18 insertions, 14 deletions
diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
index e22c94f5a..5f1299e31 100644
--- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
@@ -82,26 +82,30 @@ namespace MediaBrowser.Providers.MediaInfo
if (!File.Exists(path))
{
- using (var stream = await _mediaEncoder.ExtractImage(new[] { item.Path }, InputType.File, true, null, null, cancellationToken).ConfigureAwait(false))
- {
- var semaphore = GetLock(path);
-
- Directory.CreateDirectory(Path.GetDirectoryName(path));
+ var semaphore = GetLock(path);
- // Acquire a lock
- await semaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
+ // Acquire a lock
+ await semaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
- try
+ try
+ {
+ // Check again in case it was saved while waiting for the lock
+ if (!File.Exists(path))
{
- using (var fileStream = _fileSystem.GetFileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read, true))
+ Directory.CreateDirectory(Path.GetDirectoryName(path));
+
+ using (var stream = await _mediaEncoder.ExtractImage(new[] { item.Path }, InputType.File, true, null, null, cancellationToken).ConfigureAwait(false))
{
- await stream.CopyToAsync(fileStream).ConfigureAwait(false);
+ using (var fileStream = _fileSystem.GetFileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read, true))
+ {
+ await stream.CopyToAsync(fileStream).ConfigureAwait(false);
+ }
}
}
- finally
- {
- semaphore.Release();
- }
+ }
+ finally
+ {
+ semaphore.Release();
}
}