diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-09-28 12:50:33 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-09-28 12:50:33 -0400 |
| commit | c05cb1dcb1bb51cadc6e413395f2adb63cbab6ad (patch) | |
| tree | 1b376930053e5eaed96e24d4a8ea49c16ed419f2 /MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs | |
| parent | 3be25f8bfbe6286d47ab5cf400fac7673e284d61 (diff) | |
fix mac ffmpeg build
Diffstat (limited to 'MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs b/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs index 9806aab4a..6df12e669 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs @@ -1,10 +1,10 @@ -using System.Collections.Generic; -using MediaBrowser.Common.Progress; +using MediaBrowser.Common.Progress; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Channels; using MediaBrowser.Model.Logging; using System; +using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -61,6 +61,7 @@ namespace MediaBrowser.Server.Implementations.Channels }, cancellationToken); var numComplete = 0; + var numItems = channels.Items.Length; foreach (var channel in channels.Items) { @@ -71,9 +72,20 @@ namespace MediaBrowser.Server.Implementations.Channels const int currentRefreshLevel = 1; var maxRefreshLevel = features.AutoRefreshLevels ?? 1; + var innerProgress = new ActionableProgress<double>(); + + var startingNumberComplete = numComplete; + innerProgress.RegisterAction(p => + { + double innerPercent = startingNumberComplete; + innerPercent += (p / 100); + innerPercent /= numItems; + progress.Report(innerPercent * 100); + }); + try { - await GetAllItems(user, channelId, null, currentRefreshLevel, maxRefreshLevel, cancellationToken).ConfigureAwait(false); + await GetAllItems(user, channelId, null, currentRefreshLevel, maxRefreshLevel, innerProgress, cancellationToken).ConfigureAwait(false); } catch (Exception ex) { @@ -82,7 +94,7 @@ namespace MediaBrowser.Server.Implementations.Channels numComplete++; double percent = numComplete; - percent /= channels.Items.Length; + percent /= numItems; progress.Report(percent * 100); } @@ -90,7 +102,7 @@ namespace MediaBrowser.Server.Implementations.Channels } - private async Task GetAllItems(string user, string channelId, string folderId, int currentRefreshLevel, int maxRefreshLevel, CancellationToken cancellationToken) + private async Task GetAllItems(string user, string channelId, string folderId, int currentRefreshLevel, int maxRefreshLevel, IProgress<double> progress, CancellationToken cancellationToken) { var folderItems = new List<string>(); @@ -119,7 +131,7 @@ namespace MediaBrowser.Server.Implementations.Channels }, cancellationToken); folderItems.AddRange(result.Items.Where(i => i.IsFolder).Select(i => i.Id.ToString("N"))); - + totalRetrieved += result.Items.Length; totalCount = result.TotalRecordCount; } @@ -130,7 +142,9 @@ namespace MediaBrowser.Server.Implementations.Channels { try { - await GetAllItems(user, channelId, folder, currentRefreshLevel + 1, maxRefreshLevel, cancellationToken).ConfigureAwait(false); + var innerProgress = new Progress<double>(); + + await GetAllItems(user, channelId, folder, currentRefreshLevel + 1, maxRefreshLevel, innerProgress, cancellationToken).ConfigureAwait(false); } catch (Exception ex) { |
