From 6fbeee841f5c5f77e0a309a8fa6736b31b7210ec Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Mon, 20 Aug 2012 17:48:11 -0400 Subject: Performance update --- MediaBrowser.Controller/Library/ItemController.cs | 45 +++++++++++++---------- 1 file changed, 25 insertions(+), 20 deletions(-) (limited to 'MediaBrowser.Controller/Library') diff --git a/MediaBrowser.Controller/Library/ItemController.cs b/MediaBrowser.Controller/Library/ItemController.cs index 0f9b859b6..55deea835 100644 --- a/MediaBrowser.Controller/Library/ItemController.cs +++ b/MediaBrowser.Controller/Library/ItemController.cs @@ -57,12 +57,12 @@ namespace MediaBrowser.Controller.Library } #endregion - private async Task ResolveItem(ItemResolveEventArgs args) + private BaseItem ResolveItem(ItemResolveEventArgs args) { // Try first priority resolvers foreach (IBaseItemResolver resolver in Kernel.Instance.EntityResolvers.Where(p => p.Priority == ResolverPriority.First)) { - var item = await resolver.ResolvePath(args); + var item = resolver.ResolvePath(args); if (item != null) { @@ -73,7 +73,7 @@ namespace MediaBrowser.Controller.Library // Try second priority resolvers foreach (IBaseItemResolver resolver in Kernel.Instance.EntityResolvers.Where(p => p.Priority == ResolverPriority.Second)) { - var item = await resolver.ResolvePath(args); + var item = resolver.ResolvePath(args); if (item != null) { @@ -84,7 +84,7 @@ namespace MediaBrowser.Controller.Library // Try third priority resolvers foreach (IBaseItemResolver resolver in Kernel.Instance.EntityResolvers.Where(p => p.Priority == ResolverPriority.Third)) { - var item = await resolver.ResolvePath(args); + var item = resolver.ResolvePath(args); if (item != null) { @@ -95,14 +95,14 @@ namespace MediaBrowser.Controller.Library // Try last priority resolvers foreach (IBaseItemResolver resolver in Kernel.Instance.EntityResolvers.Where(p => p.Priority == ResolverPriority.Last)) { - var item = await resolver.ResolvePath(args); + var item = resolver.ResolvePath(args); if (item != null) { return item; } } - + return null; } @@ -111,7 +111,7 @@ namespace MediaBrowser.Controller.Library /// public async Task GetItem(Folder parent, string path) { - return await GetItemInternal(parent, path, File.GetAttributes(path)); + return await GetItemInternal(parent, path, File.GetAttributes(path)).ConfigureAwait(false); } /// @@ -154,14 +154,19 @@ namespace MediaBrowser.Controller.Library return null; } - BaseItem item = await ResolveItem(args); - - var folder = item as Folder; + BaseItem item = ResolveItem(args); - if (folder != null) + if (item != null) { - // If it's a folder look for child entities - await AttachChildren(folder, fileSystemChildren); + await Kernel.Instance.ExecuteMetadataProviders(item, args); + + var folder = item as Folder; + + if (folder != null) + { + // If it's a folder look for child entities + await AttachChildren(folder, fileSystemChildren).ConfigureAwait(false); + } } return item; @@ -185,7 +190,7 @@ namespace MediaBrowser.Controller.Library tasks[i] = GetItemInternal(folder, child.Key, child.Value); } - BaseItem[] baseItemChildren = await Task.WhenAll(tasks); + BaseItem[] baseItemChildren = await Task.WhenAll(tasks).ConfigureAwait(false); // Sort them folder.Children = baseItemChildren.Where(i => i != null).OrderBy(f => @@ -255,7 +260,7 @@ namespace MediaBrowser.Controller.Library { string path = Path.Combine(Kernel.Instance.ApplicationPaths.PeoplePath, name); - return await GetImagesByNameItem(path, name); + return await GetImagesByNameItem(path, name).ConfigureAwait(false); } /// @@ -265,7 +270,7 @@ namespace MediaBrowser.Controller.Library { string path = Path.Combine(Kernel.Instance.ApplicationPaths.StudioPath, name); - return await GetImagesByNameItem(path, name); + return await GetImagesByNameItem(path, name).ConfigureAwait(false); } /// @@ -275,7 +280,7 @@ namespace MediaBrowser.Controller.Library { string path = Path.Combine(Kernel.Instance.ApplicationPaths.GenrePath, name); - return await GetImagesByNameItem(path, name); + return await GetImagesByNameItem(path, name).ConfigureAwait(false); } /// @@ -285,7 +290,7 @@ namespace MediaBrowser.Controller.Library { string path = Path.Combine(Kernel.Instance.ApplicationPaths.YearPath, value.ToString()); - return await GetImagesByNameItem(path, value.ToString()); + return await GetImagesByNameItem(path, value.ToString()).ConfigureAwait(false); } private ConcurrentDictionary ImagesByNameItemCache = new ConcurrentDictionary(); @@ -301,7 +306,7 @@ namespace MediaBrowser.Controller.Library // Look for it in the cache, if it's not there, create it if (!ImagesByNameItemCache.ContainsKey(key)) { - T obj = await CreateImagesByNameItem(path, name); + T obj = await CreateImagesByNameItem(path, name).ConfigureAwait(false); ImagesByNameItemCache[key] = obj; return obj; } @@ -333,7 +338,7 @@ namespace MediaBrowser.Controller.Library args.FileAttributes = File.GetAttributes(path); args.FileSystemChildren = Directory.GetFileSystemEntries(path, "*", SearchOption.TopDirectoryOnly).Select(f => new KeyValuePair(f, File.GetAttributes(f))); - await Kernel.Instance.ExecuteMetadataProviders(item, args); + await Kernel.Instance.ExecuteMetadataProviders(item, args).ConfigureAwait(false); return item; } -- cgit v1.2.3