diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-05-19 01:20:47 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-05-19 01:20:47 -0400 |
| commit | edfc55fdf63304c047ca0946e93ffb5d12782e65 (patch) | |
| tree | 3bc2d8cbde50557d78bf7dbeba8e9c2a0448b5df /MediaBrowser.Controller/Entities/AggregateFolder.cs | |
| parent | 34d4e4317aa9cd3e354ada10defb1ac1f142bf9f (diff) | |
fix content sometimes not appearing after restart
Diffstat (limited to 'MediaBrowser.Controller/Entities/AggregateFolder.cs')
| -rw-r--r-- | MediaBrowser.Controller/Entities/AggregateFolder.cs | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/MediaBrowser.Controller/Entities/AggregateFolder.cs b/MediaBrowser.Controller/Entities/AggregateFolder.cs index 018ff6da0..3efe46bad 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(); + if (setPhysicalLocations) + { + _requiresRefresh = !args.PhysicalLocations.SequenceEqual(PhysicalLocations); + PhysicalLocationsList = args.PhysicalLocations.ToList(); + } return args; } |
