aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-02-06 11:46:26 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-02-06 11:46:26 -0500
commit8b29e67e2240eaf5a1ca091ce23fde0b1784815b (patch)
treec9014c3b1775d8e385a62b21accfc785b0b8b477
parent38d88aed5811d22feef83e05753d95624efe0ded (diff)
default recursive to true when validating children
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs22
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs27
-rw-r--r--MediaBrowser.Controller/Entities/Movies/Movie.cs4
-rw-r--r--MediaBrowser.Controller/Entities/Video.cs3
4 files changed, 36 insertions, 20 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index c21b9b05f..e9eee9e40 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -570,7 +570,9 @@ namespace MediaBrowser.Controller.Entities
}
return audio;
- }).ToList();
+
+ // Sort them so that the list can be easily compared for changes
+ }).OrderBy(i => i.Path).ToList();
}
/// <summary>
@@ -594,7 +596,9 @@ namespace MediaBrowser.Controller.Entities
}
return item;
- }).ToList();
+
+ // Sort them so that the list can be easily compared for changes
+ }).OrderBy(i => i.Path).ToList();
}
public Task RefreshMetadata(CancellationToken cancellationToken)
@@ -652,8 +656,19 @@ namespace MediaBrowser.Controller.Entities
}
}
- if (themeSongsChanged || themeVideosChanged || localTrailersChanged)
+ if (themeSongsChanged)
+ {
+ Logger.Debug("Theme songs have changed for {0}", Path);
+ options.ForceSave = true;
+ }
+ if (themeVideosChanged)
{
+ Logger.Debug("Theme videos have changed for {0}", Path);
+ options.ForceSave = true;
+ }
+ if (localTrailersChanged)
+ {
+ Logger.Debug("Local trailers have changed for {0}", Path);
options.ForceSave = true;
}
}
@@ -684,6 +699,7 @@ namespace MediaBrowser.Controller.Entities
private async Task<bool> RefreshThemeVideos(IHasThemeMedia item, MetadataRefreshOptions options, IEnumerable<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
{
var newThemeVideos = LoadThemeVideos(fileSystemChildren).ToList();
+
var newThemeVideoIds = newThemeVideos.Select(i => i.Id).ToList();
var themeVideosChanged = !item.ThemeVideoIds.SequenceEqual(newThemeVideoIds);
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index b625789a1..61cd5a2dc 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -366,7 +366,7 @@ namespace MediaBrowser.Controller.Entities
cancellationToken.ThrowIfCancellationRequested();
- var validChildren = new List<Tuple<BaseItem, bool>>();
+ var validChildren = new List<BaseItem>();
if (locationType != LocationType.Remote && locationType != LocationType.Virtual)
{
@@ -412,11 +412,11 @@ namespace MediaBrowser.Controller.Entities
}
currentChild.IsInMixedFolder = child.IsInMixedFolder;
- validChildren.Add(new Tuple<BaseItem, bool>(currentChild, true));
+ validChildren.Add(currentChild);
}
else
{
- validChildren.Add(new Tuple<BaseItem, bool>(currentChild, false));
+ validChildren.Add(currentChild);
}
currentChild.IsOffline = false;
@@ -426,17 +426,15 @@ namespace MediaBrowser.Controller.Entities
//brand new item - needs to be added
newItems.Add(child);
- validChildren.Add(new Tuple<BaseItem, bool>(child, true));
+ validChildren.Add(child);
}
}
// If any items were added or removed....
if (newItems.Count > 0 || currentChildren.Count != validChildren.Count)
{
- var newChildren = validChildren.Select(c => c.Item1).ToList();
-
// That's all the new and changed ones - now see if there are any that are missing
- var itemsRemoved = currentChildren.Values.Except(newChildren).ToList();
+ var itemsRemoved = currentChildren.Values.Except(validChildren).ToList();
var actualRemovals = new List<BaseItem>();
@@ -446,14 +444,14 @@ namespace MediaBrowser.Controller.Entities
item.LocationType == LocationType.Remote)
{
// Don't remove these because there's no way to accurately validate them.
- validChildren.Add(new Tuple<BaseItem, bool>(item, false));
+ validChildren.Add(item);
}
else if (!string.IsNullOrEmpty(item.Path) && IsPathOffline(item.Path))
{
item.IsOffline = true;
- validChildren.Add(new Tuple<BaseItem, bool>(item, false));
+ validChildren.Add(item);
}
else
{
@@ -481,7 +479,7 @@ namespace MediaBrowser.Controller.Entities
}
else
{
- validChildren.AddRange(ActualChildren.Select(i => new Tuple<BaseItem, bool>(i, false)));
+ validChildren.AddRange(ActualChildren);
}
progress.Report(10);
@@ -502,7 +500,7 @@ namespace MediaBrowser.Controller.Entities
/// <param name="recursive">if set to <c>true</c> [recursive].</param>
/// <param name="forceRefreshMetadata">if set to <c>true</c> [force refresh metadata].</param>
/// <returns>Task.</returns>
- private async Task RefreshChildren(IList<Tuple<BaseItem, bool>> children, IProgress<double> progress, CancellationToken cancellationToken, bool? recursive, bool forceRefreshMetadata = false)
+ private async Task RefreshChildren(IList<BaseItem> children, IProgress<double> progress, CancellationToken cancellationToken, bool? recursive, bool forceRefreshMetadata = false)
{
var list = children;
@@ -525,17 +523,16 @@ namespace MediaBrowser.Controller.Entities
await Task.WhenAll(tasks).ConfigureAwait(false);
}
- private async Task RefreshChild(Tuple<BaseItem, bool> currentTuple, IProgress<double> progress, Dictionary<Guid, double> percentages, int childCount, CancellationToken cancellationToken, bool? recursive, bool forceRefreshMetadata = false)
+ private async Task RefreshChild(BaseItem item, IProgress<double> progress, Dictionary<Guid, double> percentages, int childCount, CancellationToken cancellationToken, bool? recursive, bool forceRefreshMetadata = false)
{
cancellationToken.ThrowIfCancellationRequested();
- var child = currentTuple.Item1;
+ var child = item;
try
{
//refresh it
await child.RefreshMetadata(new MetadataRefreshOptions
{
- ForceSave = currentTuple.Item2,
ReplaceAllMetadata = forceRefreshMetadata
}, cancellationToken).ConfigureAwait(false);
@@ -546,7 +543,7 @@ namespace MediaBrowser.Controller.Entities
}
// Refresh children if a folder and the item changed or recursive is set to true
- var refreshChildren = child.IsFolder && (currentTuple.Item2 || (recursive.HasValue && recursive.Value));
+ var refreshChildren = child.IsFolder;
if (refreshChildren)
{
diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs
index 41a1969d6..b3145e496 100644
--- a/MediaBrowser.Controller/Entities/Movies/Movie.cs
+++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs
@@ -157,7 +157,9 @@ namespace MediaBrowser.Controller.Entities.Movies
}
return video;
- });
+
+ // Sort them so that the list can be easily compared for changes
+ }).OrderBy(i => i.Path).ToList();
}
protected override bool GetBlockUnratedValue(UserConfiguration config)
diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs
index de78068b3..6aa3ae819 100644
--- a/MediaBrowser.Controller/Entities/Video.cs
+++ b/MediaBrowser.Controller/Entities/Video.cs
@@ -238,7 +238,8 @@ namespace MediaBrowser.Controller.Entities
return video;
- }).ToList();
+ // Sort them so that the list can be easily compared for changes
+ }).OrderBy(i => i.Path).ToList();
}
public override IEnumerable<string> GetDeletePaths()