Browse Source

prevent xml savers from triggering xml providers

Luke Pulverenti 11 years ago
parent
commit
9f4f2281cd
30 changed files with 55 additions and 100 deletions
  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">