diff options
| author | Mark Cilia Vincenti <markciliavincenti@gmail.com> | 2024-05-06 03:21:54 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-05 19:21:54 -0600 |
| commit | af74aa35d76435f5bd01aeec77f406376b3b8c28 (patch) | |
| tree | 41a541eceb1a7a970c3873ec472c80c0a7300026 | |
| parent | 688a734895379c1bb452a4c5a292fbda85e7cc2e (diff) | |
Clean up synchronization (#11458)
| -rw-r--r-- | MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs | 14 |
2 files changed, 10 insertions, 18 deletions
diff --git a/MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs b/MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs index a11440ced..3b7745b6a 100644 --- a/MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs +++ b/MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs @@ -247,7 +247,7 @@ namespace MediaBrowser.MediaEncoding.Attachments MediaSourceInfo mediaSource, CancellationToken cancellationToken) { - var outputFileLocks = new List<AsyncKeyedLockReleaser<string>>(); + var outputFileLocks = new List<IDisposable>(); var extractableAttachmentIds = new List<int>(); try @@ -256,16 +256,15 @@ namespace MediaBrowser.MediaEncoding.Attachments { var outputPath = GetAttachmentCachePath(mediaPath, mediaSource, attachment.Index); - var @outputFileLock = _semaphoreLocks.GetOrAdd(outputPath); - await @outputFileLock.SemaphoreSlim.WaitAsync(cancellationToken).ConfigureAwait(false); + var releaser = await _semaphoreLocks.LockAsync(outputPath, cancellationToken).ConfigureAwait(false); if (File.Exists(outputPath)) { - @outputFileLock.Dispose(); + releaser.Dispose(); continue; } - outputFileLocks.Add(@outputFileLock); + outputFileLocks.Add(releaser); extractableAttachmentIds.Add(attachment.Index); } @@ -280,10 +279,7 @@ namespace MediaBrowser.MediaEncoding.Attachments } finally { - foreach (var @outputFileLock in outputFileLocks) - { - @outputFileLock.Dispose(); - } + outputFileLocks.ForEach(x => x.Dispose()); } } diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs index 21f4cb1cd..16837d98b 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs @@ -457,7 +457,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles /// <returns>Task.</returns> private async Task ExtractAllTextSubtitles(MediaSourceInfo mediaSource, CancellationToken cancellationToken) { - var locks = new List<AsyncKeyedLockReleaser<string>>(); + var locks = new List<IDisposable>(); var extractableStreams = new List<MediaStream>(); try @@ -469,16 +469,15 @@ namespace MediaBrowser.MediaEncoding.Subtitles { var outputPath = GetSubtitleCachePath(mediaSource, subtitleStream.Index, "." + GetTextSubtitleFormat(subtitleStream)); - var @lock = _semaphoreLocks.GetOrAdd(outputPath); - await @lock.SemaphoreSlim.WaitAsync(cancellationToken).ConfigureAwait(false); + var releaser = await _semaphoreLocks.LockAsync(outputPath, cancellationToken).ConfigureAwait(false); if (File.Exists(outputPath)) { - @lock.Dispose(); + releaser.Dispose(); continue; } - locks.Add(@lock); + locks.Add(releaser); extractableStreams.Add(subtitleStream); } @@ -493,10 +492,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles } finally { - foreach (var @lock in locks) - { - @lock.Dispose(); - } + locks.ForEach(x => x.Dispose()); } } |
