fix content sometimes not appearing after restart

This commit is contained in:
Luke Pulverenti
2016-05-19 01:20:47 -04:00
parent 34d4e4317a
commit edfc55fdf6
4 changed files with 51 additions and 14 deletions

View File

@@ -64,10 +64,37 @@ namespace MediaBrowser.Controller.Entities
protected override IEnumerable<FileSystemMetadata> GetFileSystemChildren(IDirectoryService directoryService)
{
return CreateResolveArgs(directoryService).FileSystemChildren;
return CreateResolveArgs(directoryService, true).FileSystemChildren;
}
private ItemResolveArgs CreateResolveArgs(IDirectoryService directoryService)
private bool _requiresRefresh;
public override bool RequiresRefresh()
{
var changed = base.RequiresRefresh() || _requiresRefresh;
if (!changed)
{
var locations = PhysicalLocations.ToList();
var newLocations = CreateResolveArgs(new DirectoryService(BaseItem.FileSystem), false).PhysicalLocations.ToList();
if (!locations.SequenceEqual(newLocations))
{
changed = true;
}
}
return changed;
}
public override bool BeforeMetadataRefresh()
{
var changed = base.BeforeMetadataRefresh() || _requiresRefresh;
_requiresRefresh = false;
return changed;
}
private ItemResolveArgs CreateResolveArgs(IDirectoryService directoryService, bool setPhysicalLocations)
{
var path = ContainingFolderPath;
@@ -100,7 +127,11 @@ namespace MediaBrowser.Controller.Entities
args.FileSystemDictionary = fileSystemDictionary;
}
PhysicalLocationsList = args.PhysicalLocations.ToList();
if (setPhysicalLocations)
{
_requiresRefresh = !args.PhysicalLocations.SequenceEqual(PhysicalLocations);
PhysicalLocationsList = args.PhysicalLocations.ToList();
}
return args;
}

View File

@@ -64,15 +64,6 @@ namespace MediaBrowser.Controller.Entities
return list;
}
/// <summary>
/// Get the children of this folder from the actual file system
/// </summary>
/// <returns>IEnumerable{BaseItem}.</returns>
protected override IEnumerable<BaseItem> GetNonCachedChildren(IDirectoryService directoryService)
{
return base.GetNonCachedChildren(directoryService);
}
public override bool BeforeMetadataRefresh()
{
var hasChanges = base.BeforeMetadataRefresh();