pull/10900/merge
jbatt33 2 weeks ago committed by GitHub
commit c1776789a8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1054,9 +1054,9 @@ namespace Emby.Server.Implementations.Data
}
}
internal string SerializeImages(ItemImageInfo[] images)
internal string SerializeImages(List<ItemImageInfo> images)
{
if (images.Length == 0)
if (images.Count == 0)
{
return null;
}
@ -1778,9 +1778,10 @@ namespace Emby.Server.Implementations.Data
if (query.DtoOptions.EnableImages)
{
if (item.ImageInfos.Length == 0 && reader.TryGetString(index, out var imageInfos))
if (item.ImageInfos.Count == 0 && reader.TryGetString(index, out var imageInfos))
{
item.ImageInfos = DeserializeImages(imageInfos);
item.ImageInfos.Clear();
item.ImageInfos.AddRange(DeserializeImages(imageInfos));
}
index++;

@ -467,7 +467,7 @@ public class ImageController : BaseJellyfinApiController
var list = new List<ImageInfo>();
var itemImages = item.ImageInfos;
if (itemImages.Length == 0)
if (itemImages.Count == 0)
{
// short-circuit
return list;

@ -91,6 +91,9 @@ namespace MediaBrowser.Controller.Entities
public const char SlugChar = '-';
[JsonIgnore]
private readonly List<ItemImageInfo> _imageInfos;
protected BaseItem()
{
Tags = Array.Empty<string>();
@ -98,7 +101,7 @@ namespace MediaBrowser.Controller.Entities
Studios = Array.Empty<string>();
ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
LockedFields = Array.Empty<MetadataField>();
ImageInfos = Array.Empty<ItemImageInfo>();
_imageInfos = new List<ItemImageInfo>();
ProductionLocations = Array.Empty<string>();
RemoteTrailers = Array.Empty<MediaUrl>();
ExtraIds = Array.Empty<Guid>();
@ -118,7 +121,10 @@ namespace MediaBrowser.Controller.Entities
public string Tagline { get; set; }
[JsonIgnore]
public virtual ItemImageInfo[] ImageInfos { get; set; }
public virtual List<ItemImageInfo> ImageInfos
{
get { return _imageInfos; }
}
[JsonIgnore]
public bool IsVirtualItem { get; set; }
@ -1975,17 +1981,12 @@ namespace MediaBrowser.Controller.Entities
public void RemoveImages(IEnumerable<ItemImageInfo> deletedImages)
{
ImageInfos = ImageInfos.Except(deletedImages).ToArray();
ImageInfos.RemoveAll(deletedImages.Contains);
}
public void AddImage(ItemImageInfo image)
{
var current = ImageInfos;
var currentCount = current.Length;
var newArr = new ItemImageInfo[currentCount + 1];
current.CopyTo(newArr, 0);
newArr[currentCount] = image;
ImageInfos = newArr;
ImageInfos.Add(image);
}
public virtual Task UpdateToRepositoryAsync(ItemUpdateType updateReason, CancellationToken cancellationToken)
@ -2124,7 +2125,7 @@ namespace MediaBrowser.Controller.Entities
}
// Yield return is more performant than LINQ Where on an Array
for (var i = 0; i < ImageInfos.Length; i++)
for (var i = 0; i < ImageInfos.Count; i++)
{
var imageInfo = ImageInfos[i];
if (imageInfo.Type == imageType)
@ -2189,7 +2190,7 @@ namespace MediaBrowser.Controller.Entities
if (newImageList.Count > 0)
{
ImageInfos = ImageInfos.Concat(newImageList.Select(i => GetImageInfo(i, imageType))).ToArray();
ImageInfos.AddRange(newImageList.Select(i => GetImageInfo(i, imageType)));
}
return imageUpdated || newImageList.Count > 0;

@ -474,7 +474,10 @@ namespace MediaBrowser.Controller.Entities
foreach (var item in localAlternates)
{
item.ImageInfos = ImageInfos;
// The original code here was making a reference assignment, this
// will only copy the values over to match.
item.ImageInfos.Clear();
item.ImageInfos.AddRange(ImageInfos);
item.Overview = Overview;
item.ProductionYear = ProductionYear;
item.PremiereDate = PremiereDate;

Loading…
Cancel
Save