aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities/AggregateFolder.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-05-21 00:49:17 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-05-21 00:49:17 -0400
commitb253d26abadc782c5bddc5ac5352ebe116154553 (patch)
treee2648ab8fc6106aa0a3218cd2ce49a93a9ecb1da /MediaBrowser.Controller/Entities/AggregateFolder.cs
parenta49a905ca2e00753d3658b0a4244374dbcfbed48 (diff)
parent7596365af2fa819d440e1ae65befea88aec29bde (diff)
Merge branch 'beta'
Diffstat (limited to 'MediaBrowser.Controller/Entities/AggregateFolder.cs')
-rw-r--r--MediaBrowser.Controller/Entities/AggregateFolder.cs37
1 files changed, 34 insertions, 3 deletions
diff --git a/MediaBrowser.Controller/Entities/AggregateFolder.cs b/MediaBrowser.Controller/Entities/AggregateFolder.cs
index 018ff6da07..588a65e98d 100644
--- a/MediaBrowser.Controller/Entities/AggregateFolder.cs
+++ b/MediaBrowser.Controller/Entities/AggregateFolder.cs
@@ -64,10 +64,37 @@ namespace MediaBrowser.Controller.Entities
protected override IEnumerable<FileSystemMetadata> GetFileSystemChildren(IDirectoryService directoryService)
{
- return CreateResolveArgs(directoryService).FileSystemChildren;
+ return CreateResolveArgs(directoryService, true).FileSystemChildren;
}
- private ItemResolveArgs CreateResolveArgs(IDirectoryService directoryService)
+ private bool _requiresRefresh;
+ public override bool RequiresRefresh()
+ {
+ var changed = base.RequiresRefresh() || _requiresRefresh;
+
+ if (!changed)
+ {
+ var locations = PhysicalLocations.ToList();
+
+ var newLocations = CreateResolveArgs(new DirectoryService(BaseItem.FileSystem), false).PhysicalLocations.ToList();
+
+ if (!locations.SequenceEqual(newLocations))
+ {
+ changed = true;
+ }
+ }
+
+ return changed;
+ }
+
+ public override bool BeforeMetadataRefresh()
+ {
+ var changed = base.BeforeMetadataRefresh() || _requiresRefresh;
+ _requiresRefresh = false;
+ return changed;
+ }
+
+ private ItemResolveArgs CreateResolveArgs(IDirectoryService directoryService, bool setPhysicalLocations)
{
var path = ContainingFolderPath;
@@ -100,7 +127,11 @@ namespace MediaBrowser.Controller.Entities
args.FileSystemDictionary = fileSystemDictionary;
}
- PhysicalLocationsList = args.PhysicalLocations.ToList();
+ _requiresRefresh = _requiresRefresh || !args.PhysicalLocations.SequenceEqual(PhysicalLocations);
+ if (setPhysicalLocations)
+ {
+ PhysicalLocationsList = args.PhysicalLocations.ToList();
+ }
return args;
}