resolve photo scan hang

This commit is contained in:
Luke Pulverenti
2015-04-16 23:31:19 -04:00
parent 6bd18c6e72
commit fd261cecf7
12 changed files with 55 additions and 83 deletions

View File

@@ -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;

View File

@@ -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.