diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-08-13 16:55:29 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-08-13 16:55:29 -0400 |
| commit | 03648936dcadf0ff0f707a5040e2e28556fa56ca (patch) | |
| tree | 38028a28a9d59978ef9ebf1b4fb1c3f146653fd1 /MediaBrowser.Controller/Entities/UserRootFolder.cs | |
| parent | 6600ff0990a1037d6f9c3bf160104089aac501e4 (diff) | |
| parent | 8508e07bb9d1af326ef4c1c1b891e0d49288167b (diff) | |
Merge pull request #2053 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Controller/Entities/UserRootFolder.cs')
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserRootFolder.cs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Entities/UserRootFolder.cs b/MediaBrowser.Controller/Entities/UserRootFolder.cs index 4549d0d1d..a62c67c4f 100644 --- a/MediaBrowser.Controller/Entities/UserRootFolder.cs +++ b/MediaBrowser.Controller/Entities/UserRootFolder.cs @@ -16,6 +16,31 @@ namespace MediaBrowser.Controller.Entities /// </summary> public class UserRootFolder : Folder { + private List<Guid> _childrenIds = null; + private readonly object _childIdsLock = new object(); + //protected override IEnumerable<BaseItem> LoadChildren() + //{ + // lock (_childIdsLock) + // { + // if (_childrenIds == null) + // { + // var list = base.LoadChildren().ToList(); + // _childrenIds = list.Select(i => i.Id).ToList(); + // return list; + // } + + // return _childrenIds.Select(LibraryManager.GetItemById).Where(i => i != null).ToList(); + // } + //} + + private void ResetCachedChildren() + { + lock (_childIdsLock) + { + _childrenIds = null; + } + } + protected override async Task<QueryResult<BaseItem>> GetItemsInternal(InternalItemsQuery query) { if (query.Recursive) @@ -69,6 +94,8 @@ namespace MediaBrowser.Controller.Entities public override bool BeforeMetadataRefresh() { + ResetCachedChildren(); + var hasChanges = base.BeforeMetadataRefresh(); if (string.Equals("default", Name, StringComparison.OrdinalIgnoreCase)) @@ -82,6 +109,8 @@ namespace MediaBrowser.Controller.Entities protected override async Task ValidateChildrenInternal(IProgress<double> progress, CancellationToken cancellationToken, bool recursive, bool refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService) { + ResetCachedChildren(); + await base.ValidateChildrenInternal(progress, cancellationToken, recursive, refreshChildMetadata, refreshOptions, directoryService) .ConfigureAwait(false); |
