mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-22 10:04:44 +01:00
resolve photo scan hang
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
using System.Globalization;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.IO;
|
||||
using MediaBrowser.Controller.Channels;
|
||||
using MediaBrowser.Controller.Collections;
|
||||
@@ -18,6 +17,7 @@ using MediaBrowser.Model.Logging;
|
||||
using MediaBrowser.Model.Users;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
@@ -164,18 +164,22 @@ namespace MediaBrowser.Controller.Entities
|
||||
|
||||
protected void AddChildrenInternal(IEnumerable<BaseItem> children)
|
||||
{
|
||||
var actualChildren = ActualChildren;
|
||||
|
||||
lock (_childrenSyncLock)
|
||||
{
|
||||
var newChildren = ActualChildren.ToList();
|
||||
var newChildren = actualChildren.ToList();
|
||||
newChildren.AddRange(children);
|
||||
_children = newChildren;
|
||||
}
|
||||
}
|
||||
protected void AddChildInternal(BaseItem child)
|
||||
{
|
||||
var actualChildren = ActualChildren;
|
||||
|
||||
lock (_childrenSyncLock)
|
||||
{
|
||||
var newChildren = ActualChildren.ToList();
|
||||
var newChildren = actualChildren.ToList();
|
||||
newChildren.Add(child);
|
||||
_children = newChildren;
|
||||
}
|
||||
@@ -184,10 +188,11 @@ namespace MediaBrowser.Controller.Entities
|
||||
protected void RemoveChildrenInternal(IEnumerable<BaseItem> children)
|
||||
{
|
||||
var ids = children.Select(i => i.Id).ToList();
|
||||
var actualChildren = ActualChildren;
|
||||
|
||||
lock (_childrenSyncLock)
|
||||
{
|
||||
_children = ActualChildren.Where(i => !ids.Contains(i.Id)).ToList();
|
||||
_children = actualChildren.Where(i => !ids.Contains(i.Id)).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,7 +307,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
{
|
||||
if (_children == null)
|
||||
{
|
||||
_children = LoadChildrenInternal();
|
||||
_children = LoadChildren().ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -356,11 +361,6 @@ namespace MediaBrowser.Controller.Entities
|
||||
return base.IsVisible(user);
|
||||
}
|
||||
|
||||
private List<BaseItem> LoadChildrenInternal()
|
||||
{
|
||||
return LoadChildren().ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loads our children. Validation will occur externally.
|
||||
/// We want this sychronous.
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace MediaBrowser.Controller.Providers
|
||||
{
|
||||
@@ -54,13 +52,6 @@ namespace MediaBrowser.Controller.Providers
|
||||
/// <value>The last result error message.</value>
|
||||
public string LastErrorMessage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the providers refreshed.
|
||||
/// </summary>
|
||||
/// <value>The providers refreshed.</value>
|
||||
public List<Guid> MetadataProvidersRefreshed { get; set; }
|
||||
public List<Guid> ImageProvidersRefreshed { get; set; }
|
||||
|
||||
public DateTime? ItemDateModified { get; set; }
|
||||
|
||||
public void AddStatus(ProviderRefreshStatus status, string errorMessage)
|
||||
@@ -83,9 +74,6 @@ namespace MediaBrowser.Controller.Providers
|
||||
public MetadataStatus()
|
||||
{
|
||||
LastStatus = ProviderRefreshStatus.Success;
|
||||
|
||||
MetadataProvidersRefreshed = new List<Guid>();
|
||||
ImageProvidersRefreshed = new List<Guid>();
|
||||
}
|
||||
|
||||
public bool IsDirty { get; private set; }
|
||||
@@ -109,33 +97,5 @@ namespace MediaBrowser.Controller.Providers
|
||||
|
||||
DateLastImagesRefresh = date;
|
||||
}
|
||||
|
||||
public void AddImageProvidersRefreshed(List<Guid> providerIds)
|
||||
{
|
||||
var count = ImageProvidersRefreshed.Count;
|
||||
|
||||
providerIds.AddRange(ImageProvidersRefreshed);
|
||||
|
||||
ImageProvidersRefreshed = providerIds.Distinct().ToList();
|
||||
|
||||
if (ImageProvidersRefreshed.Count != count)
|
||||
{
|
||||
IsDirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void AddMetadataProvidersRefreshed(List<Guid> providerIds)
|
||||
{
|
||||
var count = MetadataProvidersRefreshed.Count;
|
||||
|
||||
providerIds.AddRange(MetadataProvidersRefreshed);
|
||||
|
||||
MetadataProvidersRefreshed = providerIds.Distinct().ToList();
|
||||
|
||||
if (MetadataProvidersRefreshed.Count != count)
|
||||
{
|
||||
IsDirty = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user