From b443d591a29bc18daea36a3871908a4c1c277990 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 28 Apr 2013 01:29:27 -0400 Subject: fixes #200 - MB3 Locking Folders for a long time --- MediaBrowser.Controller/Drawing/ImageManager.cs | 4 +- MediaBrowser.Controller/Dto/DtoBuilder.cs | 2 +- MediaBrowser.Controller/Entities/BaseItem.cs | 31 ++-- MediaBrowser.Controller/Entities/Folder.cs | 2 +- MediaBrowser.Controller/Entities/Movies/Movie.cs | 6 +- MediaBrowser.Controller/Entities/TV/Season.cs | 7 +- MediaBrowser.Controller/Entities/TV/Series.cs | 5 +- MediaBrowser.Controller/IO/FileData.cs | 90 +++--------- MediaBrowser.Controller/IO/FileSystem.cs | 159 ++++++--------------- MediaBrowser.Controller/Library/ILibraryManager.cs | 7 +- MediaBrowser.Controller/Library/ItemResolveArgs.cs | 60 ++++---- MediaBrowser.Controller/Library/TVUtils.cs | 15 +- .../Providers/FolderProviderFromXml.cs | 6 +- .../Providers/ImageFromMediaLocationProvider.cs | 59 ++++---- .../Providers/ImagesByNameProvider.cs | 62 ++------ .../MediaInfo/FFProbeVideoInfoProvider.cs | 9 +- .../Providers/Movies/MovieProviderFromJson.cs | 6 +- .../Providers/Movies/MovieProviderFromXml.cs | 6 +- .../Providers/Movies/PersonProviderFromJson.cs | 2 +- .../Providers/Music/MusicArtistProviderFromJson.cs | 6 +- .../TV/EpisodeImageFromMediaLocationProvider.cs | 13 +- .../Providers/TV/EpisodeProviderFromXml.cs | 6 +- .../Providers/TV/SeriesProviderFromXml.cs | 6 +- .../Resolvers/EntityResolutionHelper.cs | 14 +- 24 files changed, 216 insertions(+), 367 deletions(-) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Drawing/ImageManager.cs b/MediaBrowser.Controller/Drawing/ImageManager.cs index d901d4a94..3bcd82d88 100644 --- a/MediaBrowser.Controller/Drawing/ImageManager.cs +++ b/MediaBrowser.Controller/Drawing/ImageManager.cs @@ -428,7 +428,7 @@ namespace MediaBrowser.Controller.Drawing var metaFileEntry = item.ResolveArgs.GetMetaFileByPath(imagePath); // If we didn't the metafile entry, check the Season - if (!metaFileEntry.HasValue) + if (metaFileEntry == null) { var episode = item as Episode; @@ -439,7 +439,7 @@ namespace MediaBrowser.Controller.Drawing } // See if we can avoid a file system lookup by looking for the file in ResolveArgs - return metaFileEntry == null ? File.GetLastWriteTimeUtc(imagePath) : metaFileEntry.Value.LastWriteTimeUtc; + return metaFileEntry == null ? File.GetLastWriteTimeUtc(imagePath) : metaFileEntry.LastWriteTimeUtc; } /// diff --git a/MediaBrowser.Controller/Dto/DtoBuilder.cs b/MediaBrowser.Controller/Dto/DtoBuilder.cs index 93f5ba8cc..7af9cb496 100644 --- a/MediaBrowser.Controller/Dto/DtoBuilder.cs +++ b/MediaBrowser.Controller/Dto/DtoBuilder.cs @@ -212,7 +212,7 @@ namespace MediaBrowser.Controller.Dto var metaFileEntry = item.ResolveArgs.GetMetaFileByPath(path); // See if we can avoid a file system lookup by looking for the file in ResolveArgs - var dateModified = metaFileEntry == null ? File.GetLastWriteTimeUtc(path) : metaFileEntry.Value.LastWriteTimeUtc; + var dateModified = metaFileEntry == null ? File.GetLastWriteTimeUtc(path) : metaFileEntry.LastWriteTimeUtc; ImageSize size; diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index c93923ab9..805cb7bdf 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -244,13 +244,13 @@ namespace MediaBrowser.Controller.Entities // Record the name of each file // Need to sort these because accoring to msdn docs, our i/o methods are not guaranteed in any order - foreach (var file in ResolveArgs.FileSystemChildren.OrderBy(f => f.cFileName)) + foreach (var file in ResolveArgs.FileSystemChildren.OrderBy(f => f.Name)) { - sb.Append(file.cFileName); + sb.Append(file.Name); } - foreach (var file in ResolveArgs.MetadataFiles.OrderBy(f => f.cFileName)) + foreach (var file in ResolveArgs.MetadataFiles.OrderBy(f => f.Name)) { - sb.Append(file.cFileName); + sb.Append(file.Name); } return sb.ToString().GetMD5(); @@ -307,7 +307,7 @@ namespace MediaBrowser.Controller.Entities /// Resets the resolve args. /// /// The path info. - public void ResetResolveArgs(WIN32_FIND_DATA? pathInfo) + public void ResetResolveArgs(FileSystemInfo pathInfo) { ResolveArgs = CreateResolveArgs(pathInfo); } @@ -318,17 +318,14 @@ namespace MediaBrowser.Controller.Entities /// The path info. /// ItemResolveArgs. /// Unable to retrieve file system info for + path - protected internal virtual ItemResolveArgs CreateResolveArgs(WIN32_FIND_DATA? pathInfo = null) + protected internal virtual ItemResolveArgs CreateResolveArgs(FileSystemInfo pathInfo = null) { var path = Path; // non file-system entries will not have a path if (LocationType != LocationType.FileSystem || string.IsNullOrEmpty(path)) { - return new ItemResolveArgs(ConfigurationManager.ApplicationPaths) - { - FileInfo = new WIN32_FIND_DATA() - }; + return new ItemResolveArgs(ConfigurationManager.ApplicationPaths); } if (UseParentPathToCreateResolveArgs) @@ -336,16 +333,16 @@ namespace MediaBrowser.Controller.Entities path = System.IO.Path.GetDirectoryName(path); } - pathInfo = pathInfo ?? FileSystem.GetFileData(path); + pathInfo = pathInfo ?? FileSystem.GetFileSystemInfo(path); - if (!pathInfo.HasValue) + if (pathInfo == null || !pathInfo.Exists) { throw new IOException("Unable to retrieve file system info for " + path); } var args = new ItemResolveArgs(ConfigurationManager.ApplicationPaths) { - FileInfo = pathInfo.Value, + FileInfo = pathInfo, Path = path, Parent = Parent }; @@ -735,11 +732,11 @@ namespace MediaBrowser.Controller.Entities return new List(); } - IEnumerable files; + IEnumerable files; try { - files = FileSystem.GetFiles(folder.Value.Path); + files = new DirectoryInfo(folder.FullName).EnumerateFiles(); } catch (IOException ex) { @@ -793,11 +790,11 @@ namespace MediaBrowser.Controller.Entities return new List(); } - IEnumerable files; + IEnumerable files; try { - files = FileSystem.GetFiles(folder.Value.Path); + files = new DirectoryInfo(folder.FullName).EnumerateFiles(); } catch (IOException ex) { diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 3a8c8eec1..a22daab22 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -768,7 +768,7 @@ namespace MediaBrowser.Controller.Entities /// IEnumerable{BaseItem}. protected virtual IEnumerable GetNonCachedChildren() { - IEnumerable fileSystemChildren; + IEnumerable fileSystemChildren; try { diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index b70ac2b3b..893d2d0e0 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -115,7 +115,7 @@ namespace MediaBrowser.Controller.Entities.Movies /// IEnumerable{Video}. private IEnumerable