diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index d135acf9c..17f32c0e6 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Model.Entities;
+using MediaBrowser.Controller.Library;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -7,6 +8,13 @@ namespace MediaBrowser.Controller.Entities
{
public abstract class BaseItem : BaseEntity, IHasProviderIds
{
+ ///
+ /// We attach these to the item so that we only ever have to hit the file system once
+ /// (this includes the children of the containing folder)
+ /// Use ResolveArgs.FileSystemChildren to check for the existence of files instead of File.Exists
+ ///
+ public ItemResolveEventArgs ResolveArgs { get; set; }
+
public string SortName { get; set; }
///
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 0858500f0..1e099e14d 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -171,6 +171,10 @@ namespace MediaBrowser.Controller.Entities
if (currentChild.IsChanged(child))
{
changed = true;
+ //update resolve args and refresh meta
+ // Note - we are refreshing the existing child instead of the newly found one so the "Except" operation below
+ // will identify this item as the same one
+ currentChild.ResolveArgs = child.ResolveArgs;
currentChild.RefreshMetadata();
//save it in repo...
validChildren.Add(currentChild);
diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs
index 13010ad8e..e7b8435bb 100644
--- a/MediaBrowser.Controller/Kernel.cs
+++ b/MediaBrowser.Controller/Kernel.cs
@@ -129,6 +129,7 @@ namespace MediaBrowser.Controller
if (item != null)
{
+ item.ResolveArgs = args;
return item;
}
}
@@ -160,6 +161,7 @@ namespace MediaBrowser.Controller
void RootFolder_ChildrenChanged(object sender, ChildrenChangedEventArgs e)
{
+ Logger.LogDebugInfo("Root Folder Children Changed. Added: " + e.ItemsAdded.Count + " Removed: " + e.ItemsRemoved.Count());
//re-start the directory watchers
DirectoryWatchers.Stop();
DirectoryWatchers.Start();