Browse Source

prevent xml savers from triggering xml providers

Luke Pulverenti 12 năm trước cách đây
mục cha
commit
9f4f2281cd
30 tập tin đã thay đổi với 55 bổ sung100 xóa
  1. 3 1
      MediaBrowser.Controller/Entities/BaseItem.cs
  2. 21 2
      MediaBrowser.Mono.sln
  3. 5 11
      MediaBrowser.Mono.userprefs
  4. 1 4
      MediaBrowser.Providers/FolderProviderFromXml.cs
  5. 1 2
      MediaBrowser.Providers/Games/GameProviderFromXml.cs
  6. 1 4
      MediaBrowser.Providers/Games/GameSystemProviderFromXml.cs
  7. 1 3
      MediaBrowser.Providers/LiveTv/ChannelProviderFromXml.cs
  8. 1 3
      MediaBrowser.Providers/Movies/BoxSetProviderFromXml.cs
  9. 1 3
      MediaBrowser.Providers/Movies/MovieProviderFromXml.cs
  10. 1 4
      MediaBrowser.Providers/Movies/PersonProviderFromXml.cs
  11. 1 3
      MediaBrowser.Providers/Music/AlbumProviderFromXml.cs
  12. 1 3
      MediaBrowser.Providers/Music/ArtistProviderFromXml.cs
  13. 0 3
      MediaBrowser.Providers/Savers/AlbumXmlSaver.cs
  14. 0 3
      MediaBrowser.Providers/Savers/ArtistXmlSaver.cs
  15. 0 2
      MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs
  16. 0 3
      MediaBrowser.Providers/Savers/ChannelXmlSaver.cs
  17. 0 5
      MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs
  18. 0 3
      MediaBrowser.Providers/Savers/FolderXmlSaver.cs
  19. 0 2
      MediaBrowser.Providers/Savers/GameSystemXmlSaver.cs
  20. 0 3
      MediaBrowser.Providers/Savers/GameXmlSaver.cs
  21. 0 3
      MediaBrowser.Providers/Savers/MovieXmlSaver.cs
  22. 0 3
      MediaBrowser.Providers/Savers/PersonXmlSaver.cs
  23. 0 4
      MediaBrowser.Providers/Savers/SeasonXmlSaver.cs
  24. 0 5
      MediaBrowser.Providers/Savers/SeriesXmlSaver.cs
  25. 1 3
      MediaBrowser.Providers/TV/EpisodeProviderFromXml.cs
  26. 1 3
      MediaBrowser.Providers/TV/SeasonProviderFromXml.cs
  27. 1 3
      MediaBrowser.Providers/TV/SeriesProviderFromXml.cs
  28. 7 0
      MediaBrowser.Server.Implementations/Library/LibraryManager.cs
  29. 2 9
      MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
  30. 5 0
      MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj

+ 3 - 1
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -154,6 +154,8 @@ namespace MediaBrowser.Controller.Entities
         /// <value>The date modified.</value>
         public DateTime DateModified { get; set; }
 
+        public DateTime DateLastSaved { get; set; }
+        
         /// <summary>
         /// The logger
         /// </summary>
@@ -827,7 +829,7 @@ namespace MediaBrowser.Controller.Entities
         /// <returns>true if a provider reports we changed</returns>
         public virtual async Task<bool> RefreshMetadata(CancellationToken cancellationToken, bool forceSave = false, bool forceRefresh = false, bool allowSlowProviders = true, bool resetResolveArgs = true)
         {
-            if (resetResolveArgs || ResolveArgs == null)
+            if (resetResolveArgs)
             {
                 // Reload this
                 ResetResolveArgs();

+ 21 - 2
MediaBrowser.Mono.sln

@@ -23,42 +23,61 @@ Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|x86 = Debug|x86
 		Release|x86 = Release|x86
+		Release|Any CPU = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 		{175A9388-F352-4586-A6B4-070DED62B644}.Debug|x86.ActiveCfg = Debug|x86
 		{175A9388-F352-4586-A6B4-070DED62B644}.Debug|x86.Build.0 = Debug|x86
+		{175A9388-F352-4586-A6B4-070DED62B644}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{175A9388-F352-4586-A6B4-070DED62B644}.Release|Any CPU.Build.0 = Release|Any CPU
 		{175A9388-F352-4586-A6B4-070DED62B644}.Release|x86.ActiveCfg = Release|x86
 		{175A9388-F352-4586-A6B4-070DED62B644}.Release|x86.Build.0 = Release|x86
 		{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}.Debug|x86.ActiveCfg = Debug|x86
 		{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}.Debug|x86.Build.0 = Debug|x86
-		{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}.Release|x86.ActiveCfg = Release|x86
-		{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}.Release|x86.Build.0 = Release|x86
+		{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}.Release|Any CPU.Build.0 = Release|Any CPU
+		{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}.Release|x86.ActiveCfg = Release|Any CPU
+		{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}.Release|x86.Build.0 = Release|Any CPU
 		{2E781478-814D-4A48-9D80-BFF206441A65}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{2E781478-814D-4A48-9D80-BFF206441A65}.Debug|x86.Build.0 = Debug|Any CPU
+		{2E781478-814D-4A48-9D80-BFF206441A65}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2E781478-814D-4A48-9D80-BFF206441A65}.Release|Any CPU.Build.0 = Release|Any CPU
 		{2E781478-814D-4A48-9D80-BFF206441A65}.Release|x86.ActiveCfg = Release|Any CPU
 		{2E781478-814D-4A48-9D80-BFF206441A65}.Release|x86.Build.0 = Release|Any CPU
 		{442B5058-DCAF-4263-BB6A-F21E31120A1B}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{442B5058-DCAF-4263-BB6A-F21E31120A1B}.Debug|x86.Build.0 = Debug|Any CPU
+		{442B5058-DCAF-4263-BB6A-F21E31120A1B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{442B5058-DCAF-4263-BB6A-F21E31120A1B}.Release|Any CPU.Build.0 = Release|Any CPU
 		{442B5058-DCAF-4263-BB6A-F21E31120A1B}.Release|x86.ActiveCfg = Release|Any CPU
 		{442B5058-DCAF-4263-BB6A-F21E31120A1B}.Release|x86.Build.0 = Release|Any CPU
 		{4FD51AC5-2C16-4308-A993-C3A84F3B4582}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{4FD51AC5-2C16-4308-A993-C3A84F3B4582}.Debug|x86.Build.0 = Debug|Any CPU
+		{4FD51AC5-2C16-4308-A993-C3A84F3B4582}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{4FD51AC5-2C16-4308-A993-C3A84F3B4582}.Release|Any CPU.Build.0 = Release|Any CPU
 		{4FD51AC5-2C16-4308-A993-C3A84F3B4582}.Release|x86.ActiveCfg = Release|Any CPU
 		{4FD51AC5-2C16-4308-A993-C3A84F3B4582}.Release|x86.Build.0 = Release|Any CPU
 		{5624B7B5-B5A7-41D8-9F10-CC5611109619}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{5624B7B5-B5A7-41D8-9F10-CC5611109619}.Debug|x86.Build.0 = Debug|Any CPU
+		{5624B7B5-B5A7-41D8-9F10-CC5611109619}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5624B7B5-B5A7-41D8-9F10-CC5611109619}.Release|Any CPU.Build.0 = Release|Any CPU
 		{5624B7B5-B5A7-41D8-9F10-CC5611109619}.Release|x86.ActiveCfg = Release|Any CPU
 		{5624B7B5-B5A7-41D8-9F10-CC5611109619}.Release|x86.Build.0 = Release|Any CPU
 		{7EEEB4BB-F3E8-48FC-B4C5-70F0FFF8329B}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{7EEEB4BB-F3E8-48FC-B4C5-70F0FFF8329B}.Debug|x86.Build.0 = Debug|Any CPU
+		{7EEEB4BB-F3E8-48FC-B4C5-70F0FFF8329B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7EEEB4BB-F3E8-48FC-B4C5-70F0FFF8329B}.Release|Any CPU.Build.0 = Release|Any CPU
 		{7EEEB4BB-F3E8-48FC-B4C5-70F0FFF8329B}.Release|x86.ActiveCfg = Release|Any CPU
 		{7EEEB4BB-F3E8-48FC-B4C5-70F0FFF8329B}.Release|x86.Build.0 = Release|Any CPU
 		{9142EEFA-7570-41E1-BFCC-468BB571AF2F}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{9142EEFA-7570-41E1-BFCC-468BB571AF2F}.Debug|x86.Build.0 = Debug|Any CPU
+		{9142EEFA-7570-41E1-BFCC-468BB571AF2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9142EEFA-7570-41E1-BFCC-468BB571AF2F}.Release|Any CPU.Build.0 = Release|Any CPU
 		{9142EEFA-7570-41E1-BFCC-468BB571AF2F}.Release|x86.ActiveCfg = Release|Any CPU
 		{9142EEFA-7570-41E1-BFCC-468BB571AF2F}.Release|x86.Build.0 = Release|Any CPU
 		{C4D2573A-3FD3-441F-81AF-174AC4CD4E1D}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{C4D2573A-3FD3-441F-81AF-174AC4CD4E1D}.Debug|x86.Build.0 = Debug|Any CPU
+		{C4D2573A-3FD3-441F-81AF-174AC4CD4E1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C4D2573A-3FD3-441F-81AF-174AC4CD4E1D}.Release|Any CPU.Build.0 = Release|Any CPU
 		{C4D2573A-3FD3-441F-81AF-174AC4CD4E1D}.Release|x86.ActiveCfg = Release|Any CPU
 		{C4D2573A-3FD3-441F-81AF-174AC4CD4E1D}.Release|x86.Build.0 = Release|Any CPU
 	EndGlobalSection

+ 5 - 11
MediaBrowser.Mono.userprefs

@@ -1,17 +1,13 @@
 <Properties>
-  <MonoDevelop.Ide.Workspace ActiveConfiguration="Release|x86" />
-  <MonoDevelop.Ide.Workbench ActiveDocument="MediaBrowser.ServerApplication\EntryPoints\StartupWizard.cs">
+  <MonoDevelop.Ide.Workspace ActiveConfiguration="Release" />
+  <MonoDevelop.Ide.Workbench ActiveDocument="MediaBrowser.Server.Mono\app.config">
     <Files>
-      <File FileName="MediaBrowser.Server.Mono\Program.cs" Line="13" Column="1" />
-      <File FileName="MediaBrowser.ServerApplication\EntryPoints\StartupWizard.cs" Line="32" Column="23" />
+      <File FileName="MediaBrowser.Server.Mono\app.config" Line="3" Column="19" />
     </Files>
     <Pads>
       <Pad Id="ProjectPad">
-        <State expanded="True">
-          <Node name="MediaBrowser.Server.Mono" expanded="True" selected="True">
-            <Node name="References" expanded="True" />
-            <Node name="EntryPoints" expanded="True" />
-          </Node>
+        <State expanded="True" selected="True">
+          <Node name="MediaBrowser.Server.Implementations" expanded="True" />
         </State>
       </Pad>
       <Pad Id="ClassPad">
@@ -24,8 +20,6 @@
   </MonoDevelop.Ide.Workbench>
   <MonoDevelop.Ide.DebuggingService.Breakpoints>
     <BreakpointStore>
-      <Breakpoint file="D:\Development\MediaBrowser\MediaBrowser.Server.Mono\Native\NativeApp.cs" line="23" column="1" />
-      <Breakpoint file="D:\Development\MediaBrowser\MediaBrowser.Server.Mono\Native\NativeApp.cs" line="15" column="1" />
       <Breakpoint file="D:\Development\MediaBrowser\MediaBrowser.Common.Implementations\HttpClientManager\HttpClientManager.cs" line="477" column="17" />
     </BreakpointStore>
   </MonoDevelop.Ide.DebuggingService.Breakpoints>

+ 1 - 4
MediaBrowser.Providers/FolderProviderFromXml.cs

@@ -1,7 +1,6 @@
 using MediaBrowser.Common.IO;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Logging;
@@ -17,14 +16,12 @@ namespace MediaBrowser.Providers
     /// </summary>
     public class FolderProviderFromXml : BaseMetadataProvider
     {
-        public static FolderProviderFromXml Current;
         private readonly IFileSystem _fileSystem;
 
         public FolderProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem)
             : base(logManager, configurationManager)
         {
             _fileSystem = fileSystem;
-            Current = this;
         }
 
         /// <summary>
@@ -56,7 +53,7 @@ namespace MediaBrowser.Providers
                 return false;
             }
 
-            return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed;
+            return _fileSystem.GetLastWriteTimeUtc(xml) > item.DateLastSaved;
         }
 
         /// <summary>

+ 1 - 2
MediaBrowser.Providers/Games/GameProviderFromXml.cs

@@ -1,7 +1,6 @@
 using MediaBrowser.Common.IO;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Logging;
 using MediaBrowser.Providers.Savers;
@@ -48,7 +47,7 @@ namespace MediaBrowser.Providers.Games
                 return false;
             }
 
-            return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed;
+            return _fileSystem.GetLastWriteTimeUtc(xml) > item.DateLastSaved;
         }
 
         /// <summary>

+ 1 - 4
MediaBrowser.Providers/Games/GameSystemProviderFromXml.cs

@@ -1,7 +1,6 @@
 using MediaBrowser.Common.IO;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Logging;
@@ -14,14 +13,12 @@ namespace MediaBrowser.Providers.Games
 {
     public class GameSystemProviderFromXml : BaseMetadataProvider
     {
-        internal static GameSystemProviderFromXml Current { get; private set; }
         private readonly IFileSystem _fileSystem;
 
         public GameSystemProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem)
             : base(logManager, configurationManager)
         {
             _fileSystem = fileSystem;
-            Current = this;
         }
 
         /// <summary>
@@ -53,7 +50,7 @@ namespace MediaBrowser.Providers.Games
                 return false;
             }
 
-            return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed;
+            return _fileSystem.GetLastWriteTimeUtc(xml) > item.DateLastSaved;
         }
 
         /// <summary>

+ 1 - 3
MediaBrowser.Providers/LiveTv/ChannelProviderFromXml.cs

@@ -13,14 +13,12 @@ namespace MediaBrowser.Providers.LiveTv
 {
     class ChannelProviderFromXml : BaseMetadataProvider
     {
-        internal static ChannelProviderFromXml Current { get; private set; }
         private readonly IFileSystem _fileSystem;
 
         public ChannelProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem)
             : base(logManager, configurationManager)
         {
             _fileSystem = fileSystem;
-            Current = this;
         }
 
         /// <summary>
@@ -52,7 +50,7 @@ namespace MediaBrowser.Providers.LiveTv
                 return false;
             }
 
-            return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed;
+            return _fileSystem.GetLastWriteTimeUtc(xml) > item.DateLastSaved;
         }
 
         /// <summary>

+ 1 - 3
MediaBrowser.Providers/Movies/BoxSetProviderFromXml.cs

@@ -18,14 +18,12 @@ namespace MediaBrowser.Providers.Movies
     /// </summary>
     public class BoxSetProviderFromXml : BaseMetadataProvider
     {
-        public static BoxSetProviderFromXml Current;
         private readonly IFileSystem _fileSystem;
 
         public BoxSetProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem)
             : base(logManager, configurationManager)
         {
             _fileSystem = fileSystem;
-            Current = this;
         }
 
         /// <summary>
@@ -57,7 +55,7 @@ namespace MediaBrowser.Providers.Movies
                 return false;
             }
 
-            return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed;
+            return _fileSystem.GetLastWriteTimeUtc(xml) > item.DateLastSaved;
         }
 
         /// <summary>

+ 1 - 3
MediaBrowser.Providers/Movies/MovieProviderFromXml.cs

@@ -19,7 +19,6 @@ namespace MediaBrowser.Providers.Movies
     /// </summary>
     public class MovieProviderFromXml : BaseMetadataProvider
     {
-        internal static MovieProviderFromXml Current { get; private set; }
         private readonly IItemRepository _itemRepo;
         private readonly IFileSystem _fileSystem;
 
@@ -28,7 +27,6 @@ namespace MediaBrowser.Providers.Movies
         {
             _itemRepo = itemRepo;
             _fileSystem = fileSystem;
-            Current = this;
         }
 
         /// <summary>
@@ -73,7 +71,7 @@ namespace MediaBrowser.Providers.Movies
                 return false;
             }
 
-            return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed;
+            return _fileSystem.GetLastWriteTimeUtc(xml) > item.DateLastSaved;
         }
 
         /// <summary>

+ 1 - 4
MediaBrowser.Providers/Movies/PersonProviderFromXml.cs

@@ -1,7 +1,6 @@
 using MediaBrowser.Common.IO;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Logging;
 using System;
@@ -13,14 +12,12 @@ namespace MediaBrowser.Providers.Movies
 {
     class PersonProviderFromXml : BaseMetadataProvider
     {
-        internal static PersonProviderFromXml Current { get; private set; }
         private readonly IFileSystem _fileSystem;
 
         public PersonProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem)
             : base(logManager, configurationManager)
         {
             _fileSystem = fileSystem;
-            Current = this;
         }
 
         /// <summary>
@@ -52,7 +49,7 @@ namespace MediaBrowser.Providers.Movies
                 return false;
             }
 
-            return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed;
+            return _fileSystem.GetLastWriteTimeUtc(xml) > item.DateLastSaved;
         }
 
         /// <summary>

+ 1 - 3
MediaBrowser.Providers/Music/AlbumProviderFromXml.cs

@@ -14,14 +14,12 @@ namespace MediaBrowser.Providers.Music
 {
     class AlbumProviderFromXml : BaseMetadataProvider
     {
-        public static AlbumProviderFromXml Current;
         private readonly IFileSystem _fileSystem;
 
         public AlbumProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem)
             : base(logManager, configurationManager)
         {
             _fileSystem = fileSystem;
-            Current = this;
         }
 
         /// <summary>
@@ -53,7 +51,7 @@ namespace MediaBrowser.Providers.Music
                 return false;
             }
 
-            return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed;
+            return _fileSystem.GetLastWriteTimeUtc(xml) > item.DateLastSaved;
         }
 
         /// <summary>

+ 1 - 3
MediaBrowser.Providers/Music/ArtistProviderFromXml.cs

@@ -14,14 +14,12 @@ namespace MediaBrowser.Providers.Music
 {
     class ArtistProviderFromXml : BaseMetadataProvider
     {
-        public static ArtistProviderFromXml Current;
         private readonly IFileSystem _fileSystem;
 
         public ArtistProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem)
             : base(logManager, configurationManager)
         {
             _fileSystem = fileSystem;
-            Current = this;
         }
 
         /// <summary>
@@ -53,7 +51,7 @@ namespace MediaBrowser.Providers.Music
                 return false;
             }
 
-            return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed;
+            return _fileSystem.GetLastWriteTimeUtc(xml) > item.DateLastSaved;
         }
 
         /// <summary>

+ 0 - 3
MediaBrowser.Providers/Savers/AlbumXmlSaver.cs

@@ -59,9 +59,6 @@ namespace MediaBrowser.Providers.Savers
             var xmlFilePath = GetSavePath(item);
 
             XmlSaverHelpers.Save(builder, xmlFilePath, new List<string> { });
-
-            // Set last refreshed so that the provider doesn't trigger after the file save
-            AlbumProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
         }
 
         /// <summary>

+ 0 - 3
MediaBrowser.Providers/Savers/ArtistXmlSaver.cs

@@ -72,9 +72,6 @@ namespace MediaBrowser.Providers.Savers
             var xmlFilePath = GetSavePath(item);
 
             XmlSaverHelpers.Save(builder, xmlFilePath, new List<string> { });
-
-            // Set last refreshed so that the provider doesn't trigger after the file save
-            ArtistProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
         }
 
         /// <summary>

+ 0 - 2
MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs

@@ -59,8 +59,6 @@ namespace MediaBrowser.Providers.Savers
             var xmlFilePath = GetSavePath(item);
 
             XmlSaverHelpers.Save(builder, xmlFilePath, new List<string> { });
-
-            BoxSetProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
         }
 
         /// <summary>

+ 0 - 3
MediaBrowser.Providers/Savers/ChannelXmlSaver.cs

@@ -56,9 +56,6 @@ namespace MediaBrowser.Providers.Savers
             XmlSaverHelpers.Save(builder, xmlFilePath, new List<string>
             {
             });
-
-            // Set last refreshed so that the provider doesn't trigger after the file save
-            ChannelProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
         }
 
         /// <summary>

+ 0 - 5
MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs

@@ -3,8 +3,6 @@ using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Persistence;
-using MediaBrowser.Providers.TV;
-using System;
 using System.Collections.Generic;
 using System.Globalization;
 using System.IO;
@@ -117,9 +115,6 @@ namespace MediaBrowser.Providers.Savers
                     "airsbefore_episode",
                     "airsbefore_season"
                 });
-
-            // Set last refreshed so that the provider doesn't trigger after the file save
-            EpisodeProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
         }
 
         /// <summary>

+ 0 - 3
MediaBrowser.Providers/Savers/FolderXmlSaver.cs

@@ -4,7 +4,6 @@ using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Entities.Movies;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Library;
-using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Text;
@@ -78,8 +77,6 @@ namespace MediaBrowser.Providers.Savers
             var xmlFilePath = GetSavePath(item);
 
             XmlSaverHelpers.Save(builder, xmlFilePath, new List<string> { });
-
-            FolderProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
         }
 
         /// <summary>

+ 0 - 2
MediaBrowser.Providers/Savers/GameSystemXmlSaver.cs

@@ -58,8 +58,6 @@ namespace MediaBrowser.Providers.Savers
             var xmlFilePath = GetSavePath(item);
 
             XmlSaverHelpers.Save(builder, xmlFilePath, new List<string> { });
-
-            GameSystemProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
         }
 
         /// <summary>

+ 0 - 3
MediaBrowser.Providers/Savers/GameXmlSaver.cs

@@ -98,9 +98,6 @@ namespace MediaBrowser.Providers.Savers
                     "NesBox",
                     "NesBoxRom"
                 });
-
-            // Set last refreshed so that the provider doesn't trigger after the file save
-            MovieProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
         }
 
         public string GetSavePath(BaseItem item)

+ 0 - 3
MediaBrowser.Providers/Savers/MovieXmlSaver.cs

@@ -122,9 +122,6 @@ namespace MediaBrowser.Providers.Savers
                     "Album",
                     "TmdbCollectionName"
                 });
-
-            // Set last refreshed so that the provider doesn't trigger after the file save
-            MovieProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
         }
 
         public string GetSavePath(BaseItem item)

+ 0 - 3
MediaBrowser.Providers/Savers/PersonXmlSaver.cs

@@ -64,9 +64,6 @@ namespace MediaBrowser.Providers.Savers
                 {
                     "PlaceOfBirth"
                 });
-
-            // Set last refreshed so that the provider doesn't trigger after the file save
-            PersonProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
         }
 
         /// <summary>

+ 0 - 4
MediaBrowser.Providers/Savers/SeasonXmlSaver.cs

@@ -2,8 +2,6 @@
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Library;
-using MediaBrowser.Providers.TV;
-using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Text;
@@ -59,8 +57,6 @@ namespace MediaBrowser.Providers.Savers
             var xmlFilePath = GetSavePath(item);
 
             XmlSaverHelpers.Save(builder, xmlFilePath, new List<string> { });
-
-            SeasonProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
         }
 
         /// <summary>

+ 0 - 5
MediaBrowser.Providers/Savers/SeriesXmlSaver.cs

@@ -3,8 +3,6 @@ using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Model.Entities;
-using MediaBrowser.Providers.TV;
-using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Security;
@@ -119,9 +117,6 @@ namespace MediaBrowser.Providers.Savers
                     // Don't preserve old series node
                     "Series"
                 });
-
-            // Set last refreshed so that the provider doesn't trigger after the file save
-            SeriesProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
         }
 
         /// <summary>

+ 1 - 3
MediaBrowser.Providers/TV/EpisodeProviderFromXml.cs

@@ -18,7 +18,6 @@ namespace MediaBrowser.Providers.TV
     /// </summary>
     public class EpisodeProviderFromXml : BaseMetadataProvider
     {
-        internal static EpisodeProviderFromXml Current { get; private set; }
         private readonly IItemRepository _itemRepo;
         private readonly IFileSystem _fileSystem;
 
@@ -27,7 +26,6 @@ namespace MediaBrowser.Providers.TV
         {
             _itemRepo = itemRepo;
             _fileSystem = fileSystem;
-            Current = this;
         }
 
         /// <summary>
@@ -78,7 +76,7 @@ namespace MediaBrowser.Providers.TV
                 return false;
             }
 
-            return _fileSystem.GetLastWriteTimeUtc(file) > providerInfo.LastRefreshed;
+            return _fileSystem.GetLastWriteTimeUtc(file) > item.DateLastSaved;
         }
 
         /// <summary>

+ 1 - 3
MediaBrowser.Providers/TV/SeasonProviderFromXml.cs

@@ -18,14 +18,12 @@ namespace MediaBrowser.Providers.TV
     /// </summary>
     public class SeasonProviderFromXml : BaseMetadataProvider
     {
-        public static SeasonProviderFromXml Current;
         private readonly IFileSystem _fileSystem;
 
         public SeasonProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem)
             : base(logManager, configurationManager)
         {
             _fileSystem = fileSystem;
-            Current = this;
         }
 
         /// <summary>
@@ -57,7 +55,7 @@ namespace MediaBrowser.Providers.TV
                 return false;
             }
 
-            return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed;
+            return _fileSystem.GetLastWriteTimeUtc(xml) > item.DateLastSaved;
         }
 
         /// <summary>

+ 1 - 3
MediaBrowser.Providers/TV/SeriesProviderFromXml.cs

@@ -18,14 +18,12 @@ namespace MediaBrowser.Providers.TV
     /// </summary>
     public class SeriesProviderFromXml : BaseMetadataProvider
     {
-        internal static SeriesProviderFromXml Current { get; private set; }
         private readonly IFileSystem _fileSystem;
 
         public SeriesProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem)
             : base(logManager, configurationManager)
         {
             _fileSystem = fileSystem;
-            Current = this;
         }
 
         /// <summary>
@@ -57,7 +55,7 @@ namespace MediaBrowser.Providers.TV
                 return false;
             }
 
-            return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed;
+            return _fileSystem.GetLastWriteTimeUtc(xml) > item.DateLastSaved;
         }
 
         /// <summary>

+ 7 - 0
MediaBrowser.Server.Implementations/Library/LibraryManager.cs

@@ -1311,6 +1311,11 @@ namespace MediaBrowser.Server.Implementations.Library
         {
             var list = items.ToList();
 
+            foreach (var item in list)
+            {
+                item.DateLastSaved = DateTime.UtcNow;
+            }
+
             await ItemRepository.SaveItems(list, cancellationToken).ConfigureAwait(false);
 
             foreach (var item in list)
@@ -1350,6 +1355,8 @@ namespace MediaBrowser.Server.Implementations.Library
                 await SaveMetadata(item, updateReason).ConfigureAwait(false);
             }
 
+            item.DateLastSaved = DateTime.UtcNow;
+
             await ItemRepository.SaveItem(item, cancellationToken).ConfigureAwait(false);
 
             UpdateItemInLibraryCache(item);

+ 2 - 9
MediaBrowser.Server.Implementations/Providers/ProviderManager.cs

@@ -202,7 +202,7 @@ namespace MediaBrowser.Server.Implementations.Providers
         {
             if (item == null)
             {
-                throw new ArgumentNullException();
+                throw new ArgumentNullException("item");
             }
 
             cancellationToken.ThrowIfCancellationRequested();
@@ -213,12 +213,9 @@ namespace MediaBrowser.Server.Implementations.Providers
                 _logger.Debug("Running {0} for {1}", provider.GetType().Name, item.Path ?? item.Name ?? "--Unknown--");
             }
 
-            // This provides the ability to cancel just this one provider
-            var innerCancellationTokenSource = new CancellationTokenSource();
-
             try
             {
-                var changed = await provider.FetchAsync(item, force, CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, innerCancellationTokenSource.Token).Token).ConfigureAwait(false);
+                var changed = await provider.FetchAsync(item, force, cancellationToken).ConfigureAwait(false);
 
                 if (changed)
                 {
@@ -247,10 +244,6 @@ namespace MediaBrowser.Server.Implementations.Providers
 
                 return ItemUpdateType.Unspecified;
             }
-            finally
-            {
-                innerCancellationTokenSource.Dispose();
-            }
         }
 
         /// <summary>

+ 5 - 0
MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj

@@ -32,6 +32,11 @@
     <PlatformTarget>x86</PlatformTarget>
     <Externalconsole>true</Externalconsole>
   </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
     <Reference Include="ServiceStack.Common">