mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	Remove custom ToArray extension
This commit is contained in:
		
							parent
							
								
									a86b71899e
								
							
						
					
					
						commit
						6e5d2aadaa
					
				@ -467,7 +467,7 @@ namespace Emby.Dlna.ContentDirectory
 | 
				
			|||||||
                IsMissing = false,
 | 
					                IsMissing = false,
 | 
				
			||||||
                ExcludeItemTypes = new[] { typeof(Game).Name, typeof(Book).Name },
 | 
					                ExcludeItemTypes = new[] { typeof(Game).Name, typeof(Book).Name },
 | 
				
			||||||
                IsFolder = isFolder,
 | 
					                IsFolder = isFolder,
 | 
				
			||||||
                MediaTypes = mediaTypes.ToArray(mediaTypes.Count),
 | 
					                MediaTypes = mediaTypes.ToArray(),
 | 
				
			||||||
                DtoOptions = GetDtoOptions()
 | 
					                DtoOptions = GetDtoOptions()
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -676,7 +676,7 @@ namespace Emby.Dlna.ContentDirectory
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            return new QueryResult<ServerItem>
 | 
					            return new QueryResult<ServerItem>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Items = list.ToArray(list.Count),
 | 
					                Items = list.ToArray(),
 | 
				
			||||||
                TotalRecordCount = list.Count
 | 
					                TotalRecordCount = list.Count
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -754,7 +754,7 @@ namespace Emby.Dlna.ContentDirectory
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            return new QueryResult<ServerItem>
 | 
					            return new QueryResult<ServerItem>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Items = list.ToArray(list.Count),
 | 
					                Items = list.ToArray(),
 | 
				
			||||||
                TotalRecordCount = list.Count
 | 
					                TotalRecordCount = list.Count
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -859,7 +859,7 @@ namespace Emby.Dlna.ContentDirectory
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            return new QueryResult<ServerItem>
 | 
					            return new QueryResult<ServerItem>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Items = list.ToArray(list.Count),
 | 
					                Items = list.ToArray(),
 | 
				
			||||||
                TotalRecordCount = list.Count
 | 
					                TotalRecordCount = list.Count
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -1026,7 +1026,7 @@ namespace Emby.Dlna.ContentDirectory
 | 
				
			|||||||
            var result = new QueryResult<BaseItem>
 | 
					            var result = new QueryResult<BaseItem>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                TotalRecordCount = genresResult.TotalRecordCount,
 | 
					                TotalRecordCount = genresResult.TotalRecordCount,
 | 
				
			||||||
                Items = genresResult.Items.Select(i => i.Item1).ToArray(genresResult.Items.Length)
 | 
					                Items = genresResult.Items.Select(i => i.Item1).ToArray()
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return ToResult(result);
 | 
					            return ToResult(result);
 | 
				
			||||||
@ -1044,7 +1044,7 @@ namespace Emby.Dlna.ContentDirectory
 | 
				
			|||||||
            var result = new QueryResult<BaseItem>
 | 
					            var result = new QueryResult<BaseItem>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                TotalRecordCount = genresResult.TotalRecordCount,
 | 
					                TotalRecordCount = genresResult.TotalRecordCount,
 | 
				
			||||||
                Items = genresResult.Items.Select(i => i.Item1).ToArray(genresResult.Items.Length)
 | 
					                Items = genresResult.Items.Select(i => i.Item1).ToArray()
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return ToResult(result);
 | 
					            return ToResult(result);
 | 
				
			||||||
@ -1062,7 +1062,7 @@ namespace Emby.Dlna.ContentDirectory
 | 
				
			|||||||
            var result = new QueryResult<BaseItem>
 | 
					            var result = new QueryResult<BaseItem>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                TotalRecordCount = artists.TotalRecordCount,
 | 
					                TotalRecordCount = artists.TotalRecordCount,
 | 
				
			||||||
                Items = artists.Items.Select(i => i.Item1).ToArray(artists.Items.Length)
 | 
					                Items = artists.Items.Select(i => i.Item1).ToArray()
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return ToResult(result);
 | 
					            return ToResult(result);
 | 
				
			||||||
@ -1080,7 +1080,7 @@ namespace Emby.Dlna.ContentDirectory
 | 
				
			|||||||
            var result = new QueryResult<BaseItem>
 | 
					            var result = new QueryResult<BaseItem>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                TotalRecordCount = artists.TotalRecordCount,
 | 
					                TotalRecordCount = artists.TotalRecordCount,
 | 
				
			||||||
                Items = artists.Items.Select(i => i.Item1).ToArray(artists.Items.Length)
 | 
					                Items = artists.Items.Select(i => i.Item1).ToArray()
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return ToResult(result);
 | 
					            return ToResult(result);
 | 
				
			||||||
@ -1099,7 +1099,7 @@ namespace Emby.Dlna.ContentDirectory
 | 
				
			|||||||
            var result = new QueryResult<BaseItem>
 | 
					            var result = new QueryResult<BaseItem>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                TotalRecordCount = artists.TotalRecordCount,
 | 
					                TotalRecordCount = artists.TotalRecordCount,
 | 
				
			||||||
                Items = artists.Items.Select(i => i.Item1).ToArray(artists.Items.Length)
 | 
					                Items = artists.Items.Select(i => i.Item1).ToArray()
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return ToResult(result);
 | 
					            return ToResult(result);
 | 
				
			||||||
@ -1247,7 +1247,7 @@ namespace Emby.Dlna.ContentDirectory
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var serverItems = result
 | 
					            var serverItems = result
 | 
				
			||||||
                .Select(i => new ServerItem(i))
 | 
					                .Select(i => new ServerItem(i))
 | 
				
			||||||
                .ToArray(result.Length);
 | 
					                .ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return new QueryResult<ServerItem>
 | 
					            return new QueryResult<ServerItem>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
				
			|||||||
@ -512,7 +512,7 @@ namespace Emby.Dlna.Didl
 | 
				
			|||||||
                streamInfo = new StreamBuilder(_mediaEncoder, GetStreamBuilderLogger(options)).BuildAudioItem(new AudioOptions
 | 
					                streamInfo = new StreamBuilder(_mediaEncoder, GetStreamBuilderLogger(options)).BuildAudioItem(new AudioOptions
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    ItemId = audio.Id,
 | 
					                    ItemId = audio.Id,
 | 
				
			||||||
                    MediaSources = sources.ToArray(sources.Count),
 | 
					                    MediaSources = sources.ToArray(),
 | 
				
			||||||
                    Profile = _profile,
 | 
					                    Profile = _profile,
 | 
				
			||||||
                    DeviceId = deviceId
 | 
					                    DeviceId = deviceId
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
				
			|||||||
@ -941,7 +941,7 @@ namespace Emby.Dlna.PlayTo
 | 
				
			|||||||
            if (room != null && !string.IsNullOrWhiteSpace(room.Value))
 | 
					            if (room != null && !string.IsNullOrWhiteSpace(room.Value))
 | 
				
			||||||
                friendlyNames.Add(room.Value);
 | 
					                friendlyNames.Add(room.Value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            deviceProperties.Name = string.Join(" ", friendlyNames.ToArray(friendlyNames.Count));
 | 
					            deviceProperties.Name = string.Join(" ", friendlyNames.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var model = document.Descendants(uPnpNamespaces.ud.GetName("modelName")).FirstOrDefault();
 | 
					            var model = document.Descendants(uPnpNamespaces.ud.GetName("modelName")).FirstOrDefault();
 | 
				
			||||||
            if (model != null)
 | 
					            if (model != null)
 | 
				
			||||||
 | 
				
			|||||||
@ -571,7 +571,7 @@ namespace Emby.Dlna.PlayTo
 | 
				
			|||||||
                    StreamInfo = new StreamBuilder(_mediaEncoder, GetStreamBuilderLogger()).BuildAudioItem(new AudioOptions
 | 
					                    StreamInfo = new StreamBuilder(_mediaEncoder, GetStreamBuilderLogger()).BuildAudioItem(new AudioOptions
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        ItemId = item.Id,
 | 
					                        ItemId = item.Id,
 | 
				
			||||||
                        MediaSources = mediaSources.ToArray(mediaSources.Count),
 | 
					                        MediaSources = mediaSources.ToArray(),
 | 
				
			||||||
                        Profile = profile,
 | 
					                        Profile = profile,
 | 
				
			||||||
                        DeviceId = deviceId,
 | 
					                        DeviceId = deviceId,
 | 
				
			||||||
                        MaxBitrate = profile.MaxStreamingBitrate,
 | 
					                        MaxBitrate = profile.MaxStreamingBitrate,
 | 
				
			||||||
 | 
				
			|||||||
@ -173,7 +173,7 @@ namespace Emby.Dlna.Profiles
 | 
				
			|||||||
                Value = value
 | 
					                Value = value
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            XmlRootAttributes = list.ToArray(list.Count);
 | 
					            XmlRootAttributes = list.ToArray();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -242,7 +242,7 @@ namespace Emby.Dlna.Service
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var originalHeaders = request.Headers;
 | 
					            var originalHeaders = request.Headers;
 | 
				
			||||||
            var headers = string.Join(", ", originalHeaders.Select(i => string.Format("{0}={1}", i.Key, i.Value)).ToArray(originalHeaders.Count));
 | 
					            var headers = string.Join(", ", originalHeaders.Select(i => string.Format("{0}={1}", i.Key, i.Value)).ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Logger.Debug("Control request. Headers: {0}", headers);
 | 
					            Logger.Debug("Control request. Headers: {0}", headers);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -564,7 +564,7 @@ namespace Emby.Drawing
 | 
				
			|||||||
            var cacheKeys = imageEnhancers.Select(i => i.GetConfigurationCacheKey(item, imageType)).ToList();
 | 
					            var cacheKeys = imageEnhancers.Select(i => i.GetConfigurationCacheKey(item, imageType)).ToList();
 | 
				
			||||||
            cacheKeys.Add(originalImagePath + dateModified.Ticks);
 | 
					            cacheKeys.Add(originalImagePath + dateModified.Ticks);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return string.Join("|", cacheKeys.ToArray(cacheKeys.Count)).GetMD5().ToString("N");
 | 
					            return string.Join("|", cacheKeys.ToArray()).GetMD5().ToString("N");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private async Task<ValueTuple<string, DateTime>> GetSupportedImage(string originalImagePath, DateTime dateModified)
 | 
					        private async Task<ValueTuple<string, DateTime>> GetSupportedImage(string originalImagePath, DateTime dateModified)
 | 
				
			||||||
 | 
				
			|||||||
@ -466,7 +466,7 @@ namespace Emby.Server.Implementations.Activity
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    Name = string.Format(_localization.GetLocalizedString("ScheduledTaskFailedWithName"), task.Name),
 | 
					                    Name = string.Format(_localization.GetLocalizedString("ScheduledTaskFailedWithName"), task.Name),
 | 
				
			||||||
                    Type = NotificationType.TaskFailed.ToString(),
 | 
					                    Type = NotificationType.TaskFailed.ToString(),
 | 
				
			||||||
                    Overview = string.Join(Environment.NewLine, vals.ToArray(vals.Count)),
 | 
					                    Overview = string.Join(Environment.NewLine, vals.ToArray()),
 | 
				
			||||||
                    ShortOverview = runningTime,
 | 
					                    ShortOverview = runningTime,
 | 
				
			||||||
                    Severity = LogSeverity.Error
 | 
					                    Severity = LogSeverity.Error
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
				
			|||||||
@ -189,13 +189,13 @@ namespace Emby.Server.Implementations.Activity
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    var whereTextWithoutPaging = whereClauses.Count == 0 ?
 | 
					                    var whereTextWithoutPaging = whereClauses.Count == 0 ?
 | 
				
			||||||
                      string.Empty :
 | 
					                      string.Empty :
 | 
				
			||||||
                      " where " + string.Join(" AND ", whereClauses.ToArray(whereClauses.Count));
 | 
					                      " where " + string.Join(" AND ", whereClauses.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (startIndex.HasValue && startIndex.Value > 0)
 | 
					                    if (startIndex.HasValue && startIndex.Value > 0)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        var pagingWhereText = whereClauses.Count == 0 ?
 | 
					                        var pagingWhereText = whereClauses.Count == 0 ?
 | 
				
			||||||
                            string.Empty :
 | 
					                            string.Empty :
 | 
				
			||||||
                            " where " + string.Join(" AND ", whereClauses.ToArray(whereClauses.Count));
 | 
					                            " where " + string.Join(" AND ", whereClauses.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        whereClauses.Add(string.Format("Id NOT IN (SELECT Id FROM ActivityLog {0} ORDER BY DateCreated DESC LIMIT {1})",
 | 
					                        whereClauses.Add(string.Format("Id NOT IN (SELECT Id FROM ActivityLog {0} ORDER BY DateCreated DESC LIMIT {1})",
 | 
				
			||||||
                            pagingWhereText,
 | 
					                            pagingWhereText,
 | 
				
			||||||
@ -204,7 +204,7 @@ namespace Emby.Server.Implementations.Activity
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    var whereText = whereClauses.Count == 0 ?
 | 
					                    var whereText = whereClauses.Count == 0 ?
 | 
				
			||||||
                        string.Empty :
 | 
					                        string.Empty :
 | 
				
			||||||
                        " where " + string.Join(" AND ", whereClauses.ToArray(whereClauses.Count));
 | 
					                        " where " + string.Join(" AND ", whereClauses.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    commandText += whereText;
 | 
					                    commandText += whereText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -249,7 +249,7 @@ namespace Emby.Server.Implementations.Activity
 | 
				
			|||||||
                            result.TotalRecordCount = statement.ExecuteQuery().SelectScalarInt().First();
 | 
					                            result.TotalRecordCount = statement.ExecuteQuery().SelectScalarInt().First();
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        result.Items = list.ToArray(list.Count);
 | 
					                        result.Items = list.ToArray();
 | 
				
			||||||
                        return result;
 | 
					                        return result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    }, ReadTransactionMode);
 | 
					                    }, ReadTransactionMode);
 | 
				
			||||||
 | 
				
			|||||||
@ -728,7 +728,7 @@ namespace Emby.Server.Implementations
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            Logger.Info("ServerId: {0}", SystemId);
 | 
					            Logger.Info("ServerId: {0}", SystemId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var entryPoints = GetExports<IServerEntryPoint>().ToList();
 | 
					            var entryPoints = GetExports<IServerEntryPoint>();
 | 
				
			||||||
            RunEntryPoints(entryPoints, true);
 | 
					            RunEntryPoints(entryPoints, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Logger.Info("Core startup complete");
 | 
					            Logger.Info("Core startup complete");
 | 
				
			||||||
 | 
				
			|||||||
@ -239,7 +239,7 @@ namespace Emby.Server.Implementations.Channels
 | 
				
			|||||||
                all = all.Take(query.Limit.Value).ToList();
 | 
					                all = all.Take(query.Limit.Value).ToList();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var returnItems = all.ToArray(all.Count);
 | 
					            var returnItems = all.ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (query.RefreshLatestChannelItems)
 | 
					            if (query.RefreshLatestChannelItems)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -1011,7 +1011,7 @@ namespace Emby.Server.Implementations.Channels
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                item.Name = info.Name;
 | 
					                item.Name = info.Name;
 | 
				
			||||||
                item.Genres = info.Genres.ToArray();
 | 
					                item.Genres = info.Genres.ToArray();
 | 
				
			||||||
                item.Studios = info.Studios.ToArray(info.Studios.Count);
 | 
					                item.Studios = info.Studios.ToArray();
 | 
				
			||||||
                item.CommunityRating = info.CommunityRating;
 | 
					                item.CommunityRating = info.CommunityRating;
 | 
				
			||||||
                item.Overview = info.Overview;
 | 
					                item.Overview = info.Overview;
 | 
				
			||||||
                item.IndexNumber = info.IndexNumber;
 | 
					                item.IndexNumber = info.IndexNumber;
 | 
				
			||||||
@ -1021,7 +1021,7 @@ namespace Emby.Server.Implementations.Channels
 | 
				
			|||||||
                item.ProviderIds = info.ProviderIds;
 | 
					                item.ProviderIds = info.ProviderIds;
 | 
				
			||||||
                item.OfficialRating = info.OfficialRating;
 | 
					                item.OfficialRating = info.OfficialRating;
 | 
				
			||||||
                item.DateCreated = info.DateCreated ?? DateTime.UtcNow;
 | 
					                item.DateCreated = info.DateCreated ?? DateTime.UtcNow;
 | 
				
			||||||
                item.Tags = info.Tags.ToArray(info.Tags.Count);
 | 
					                item.Tags = info.Tags.ToArray();
 | 
				
			||||||
                item.OriginalTitle = info.OriginalTitle;
 | 
					                item.OriginalTitle = info.OriginalTitle;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (info.Type == ChannelItemType.Folder && info.FolderType == ChannelFolderType.Container)
 | 
					            else if (info.Type == ChannelItemType.Folder && info.FolderType == ChannelFolderType.Container)
 | 
				
			||||||
@ -1043,7 +1043,7 @@ namespace Emby.Server.Implementations.Channels
 | 
				
			|||||||
            var hasAlbumArtists = item as IHasAlbumArtist;
 | 
					            var hasAlbumArtists = item as IHasAlbumArtist;
 | 
				
			||||||
            if (hasAlbumArtists != null)
 | 
					            if (hasAlbumArtists != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                hasAlbumArtists.AlbumArtists = info.AlbumArtists.ToArray(info.AlbumArtists.Count);
 | 
					                hasAlbumArtists.AlbumArtists = info.AlbumArtists.ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var trailer = item as Trailer;
 | 
					            var trailer = item as Trailer;
 | 
				
			||||||
 | 
				
			|||||||
@ -219,7 +219,7 @@ namespace Emby.Server.Implementations.Collections
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                var newList = collection.LinkedChildren.ToList();
 | 
					                var newList = collection.LinkedChildren.ToList();
 | 
				
			||||||
                newList.AddRange(list);
 | 
					                newList.AddRange(list);
 | 
				
			||||||
                collection.LinkedChildren = newList.ToArray(newList.Count);
 | 
					                collection.LinkedChildren = newList.ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                collection.UpdateRatingToItems(linkedChildrenList);
 | 
					                collection.UpdateRatingToItems(linkedChildrenList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1148,7 +1148,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            item.ImageInfos = list.ToArray(list.Count);
 | 
					            item.ImageInfos = list.ToArray();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public string ToValueString(ItemImageInfo image)
 | 
					        public string ToValueString(ItemImageInfo image)
 | 
				
			||||||
@ -2566,7 +2566,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
                excludeIds.Add(item.Id);
 | 
					                excludeIds.Add(item.Id);
 | 
				
			||||||
                excludeIds.AddRange(item.ExtraIds);
 | 
					                excludeIds.AddRange(item.ExtraIds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                query.ExcludeItemIds = excludeIds.ToArray(excludeIds.Count);
 | 
					                query.ExcludeItemIds = excludeIds.ToArray();
 | 
				
			||||||
                query.ExcludeProviderIds = item.ProviderIds;
 | 
					                query.ExcludeProviderIds = item.ProviderIds;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2587,7 +2587,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
                list.Add(builder.ToString());
 | 
					                list.Add(builder.ToString());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return list.ToArray(list.Count);
 | 
					            return list.ToArray();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void BindSearchParams(InternalItemsQuery query, IStatement statement)
 | 
					        private void BindSearchParams(InternalItemsQuery query, IStatement statement)
 | 
				
			||||||
@ -2666,7 +2666,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (groups.Count > 0)
 | 
					            if (groups.Count > 0)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                return " Group by " + string.Join(",", groups.ToArray(groups.Count));
 | 
					                return " Group by " + string.Join(",", groups.ToArray());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return string.Empty;
 | 
					            return string.Empty;
 | 
				
			||||||
@ -2703,7 +2703,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var whereText = whereClauses.Count == 0 ?
 | 
					            var whereText = whereClauses.Count == 0 ?
 | 
				
			||||||
                string.Empty :
 | 
					                string.Empty :
 | 
				
			||||||
                " where " + string.Join(" AND ", whereClauses.ToArray(whereClauses.Count));
 | 
					                " where " + string.Join(" AND ", whereClauses.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            commandText += whereText;
 | 
					            commandText += whereText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2761,7 +2761,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var whereText = whereClauses.Count == 0 ?
 | 
					            var whereText = whereClauses.Count == 0 ?
 | 
				
			||||||
                string.Empty :
 | 
					                string.Empty :
 | 
				
			||||||
                " where " + string.Join(" AND ", whereClauses.ToArray(whereClauses.Count));
 | 
					                " where " + string.Join(" AND ", whereClauses.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            commandText += whereText;
 | 
					            commandText += whereText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2938,7 +2938,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
                var returnList = GetItemList(query);
 | 
					                var returnList = GetItemList(query);
 | 
				
			||||||
                return new QueryResult<BaseItem>
 | 
					                return new QueryResult<BaseItem>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    Items = returnList.ToArray(returnList.Count),
 | 
					                    Items = returnList.ToArray(),
 | 
				
			||||||
                    TotalRecordCount = returnList.Count
 | 
					                    TotalRecordCount = returnList.Count
 | 
				
			||||||
                };
 | 
					                };
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -2961,7 +2961,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var whereText = whereClauses.Count == 0 ?
 | 
					            var whereText = whereClauses.Count == 0 ?
 | 
				
			||||||
                string.Empty :
 | 
					                string.Empty :
 | 
				
			||||||
                " where " + string.Join(" AND ", whereClauses.ToArray(whereClauses.Count));
 | 
					                " where " + string.Join(" AND ", whereClauses.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var whereTextWithoutPaging = whereText;
 | 
					            var whereTextWithoutPaging = whereText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -3079,7 +3079,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                        LogQueryTime("GetItems", commandText, now);
 | 
					                        LogQueryTime("GetItems", commandText, now);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        result.Items = list.ToArray(list.Count);
 | 
					                        result.Items = list.ToArray();
 | 
				
			||||||
                        return result;
 | 
					                        return result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    }, ReadTransactionMode);
 | 
					                    }, ReadTransactionMode);
 | 
				
			||||||
@ -3227,7 +3227,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var whereText = whereClauses.Count == 0 ?
 | 
					            var whereText = whereClauses.Count == 0 ?
 | 
				
			||||||
                string.Empty :
 | 
					                string.Empty :
 | 
				
			||||||
                " where " + string.Join(" AND ", whereClauses.ToArray(whereClauses.Count));
 | 
					                " where " + string.Join(" AND ", whereClauses.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            commandText += whereText;
 | 
					            commandText += whereText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -3299,7 +3299,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var whereText = whereClauses.Count == 0 ?
 | 
					            var whereText = whereClauses.Count == 0 ?
 | 
				
			||||||
                string.Empty :
 | 
					                string.Empty :
 | 
				
			||||||
                " where " + string.Join(" AND ", whereClauses.ToArray(whereClauses.Count));
 | 
					                " where " + string.Join(" AND ", whereClauses.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            commandText += whereText;
 | 
					            commandText += whereText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -3372,7 +3372,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
                var returnList = GetItemIdsList(query);
 | 
					                var returnList = GetItemIdsList(query);
 | 
				
			||||||
                return new QueryResult<Guid>
 | 
					                return new QueryResult<Guid>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    Items = returnList.ToArray(returnList.Count),
 | 
					                    Items = returnList.ToArray(),
 | 
				
			||||||
                    TotalRecordCount = returnList.Count
 | 
					                    TotalRecordCount = returnList.Count
 | 
				
			||||||
                };
 | 
					                };
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -3387,7 +3387,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var whereText = whereClauses.Count == 0 ?
 | 
					            var whereText = whereClauses.Count == 0 ?
 | 
				
			||||||
                string.Empty :
 | 
					                string.Empty :
 | 
				
			||||||
                " where " + string.Join(" AND ", whereClauses.ToArray(whereClauses.Count));
 | 
					                " where " + string.Join(" AND ", whereClauses.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var whereTextWithoutPaging = whereText;
 | 
					            var whereTextWithoutPaging = whereText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -3495,7 +3495,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                        LogQueryTime("GetItemIds", commandText, now);
 | 
					                        LogQueryTime("GetItemIds", commandText, now);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        result.Items = list.ToArray(list.Count);
 | 
					                        result.Items = list.ToArray();
 | 
				
			||||||
                        return result;
 | 
					                        return result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    }, ReadTransactionMode);
 | 
					                    }, ReadTransactionMode);
 | 
				
			||||||
@ -3690,7 +3690,7 @@ namespace Emby.Server.Implementations.Data
 | 
				
			|||||||
                    statement.TryBind("@IsMovie", true);
 | 
					                    statement.TryBind("@IsMovie", true);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                whereClauses.Add("(" + string.Join(" OR ", programAttribtues.ToArray(programAttribtues.Count)) + ")");
 | 
					                whereClauses.Add("(" + string.Join(" OR ", programAttribtues.ToArray()) + ")");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (query.IsMovie.HasValue)
 | 
					            else if (query.IsMovie.HasValue)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -5813,7 +5813,7 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
 | 
				
			|||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            result.TotalRecordCount = list.Count;
 | 
					                            result.TotalRecordCount = list.Count;
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        result.Items = list.ToArray(list.Count);
 | 
					                        result.Items = list.ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        return result;
 | 
					                        return result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -289,7 +289,7 @@ namespace Emby.Server.Implementations.Devices
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                var list = history.FilesUploaded.ToList();
 | 
					                var list = history.FilesUploaded.ToList();
 | 
				
			||||||
                list.Add(file);
 | 
					                list.Add(file);
 | 
				
			||||||
                history.FilesUploaded = list.ToArray(list.Count);
 | 
					                history.FilesUploaded = list.ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                _json.SerializeToFile(history, path);
 | 
					                _json.SerializeToFile(history, path);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
@ -648,7 +648,7 @@ namespace Emby.Server.Implementations.Dto
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            dto.People = list.ToArray(list.Count);
 | 
					            dto.People = list.ToArray();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
 | 
				
			|||||||
@ -12,7 +12,6 @@ using MediaBrowser.Model.Events;
 | 
				
			|||||||
using MediaBrowser.Model.Logging;
 | 
					using MediaBrowser.Model.Logging;
 | 
				
			||||||
using MediaBrowser.Model.Threading;
 | 
					using MediaBrowser.Model.Threading;
 | 
				
			||||||
using Mono.Nat;
 | 
					using Mono.Nat;
 | 
				
			||||||
using MediaBrowser.Model.Extensions;
 | 
					 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Emby.Server.Implementations.EntryPoints
 | 
					namespace Emby.Server.Implementations.EntryPoints
 | 
				
			||||||
@ -59,7 +58,7 @@ namespace Emby.Server.Implementations.EntryPoints
 | 
				
			|||||||
            values.Add(_appHost.EnableHttps.ToString());
 | 
					            values.Add(_appHost.EnableHttps.ToString());
 | 
				
			||||||
            values.Add((config.EnableRemoteAccess).ToString());
 | 
					            values.Add((config.EnableRemoteAccess).ToString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return string.Join("|", values.ToArray(values.Count));
 | 
					            return string.Join("|", values.ToArray());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void _config_ConfigurationUpdated(object sender, EventArgs e)
 | 
					        void _config_ConfigurationUpdated(object sender, EventArgs e)
 | 
				
			||||||
 | 
				
			|||||||
@ -58,7 +58,7 @@ namespace Emby.Server.Implementations.EntryPoints
 | 
				
			|||||||
                    session.ApplicationVersion
 | 
					                    session.ApplicationVersion
 | 
				
			||||||
                };
 | 
					                };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var key = string.Join("_", keys.ToArray(keys.Count)).GetMD5();
 | 
					                var key = string.Join("_", keys.ToArray()).GetMD5();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                ClientInfo info;
 | 
					                ClientInfo info;
 | 
				
			||||||
                if (!_apps.TryGetValue(key, out info))
 | 
					                if (!_apps.TryGetValue(key, out info))
 | 
				
			||||||
 | 
				
			|||||||
@ -825,7 +825,7 @@ namespace Emby.Server.Implementations.HttpServer
 | 
				
			|||||||
                });
 | 
					                });
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return routes.ToArray(routes.Count);
 | 
					            return routes.ToArray();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Func<string, object> GetParseFn(Type propertyType)
 | 
					        public Func<string, object> GetParseFn(Type propertyType)
 | 
				
			||||||
 | 
				
			|||||||
@ -2,6 +2,7 @@ using System.Collections;
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Collections.ObjectModel;
 | 
					using System.Collections.ObjectModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TODO: @bond Remove
 | 
				
			||||||
namespace SharpCifs.Util.Sharpen
 | 
					namespace SharpCifs.Util.Sharpen
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    internal static class Collections<T>
 | 
					    internal static class Collections<T>
 | 
				
			||||||
 | 
				
			|||||||
@ -1493,7 +1493,7 @@ namespace Emby.Server.Implementations.Library
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            return new QueryResult<BaseItem>
 | 
					            return new QueryResult<BaseItem>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Items = list.ToArray(list.Count)
 | 
					                Items = list.ToArray()
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -161,8 +161,8 @@ namespace Emby.Server.Implementations.Library
 | 
				
			|||||||
            var searchQuery = new InternalItemsQuery(user)
 | 
					            var searchQuery = new InternalItemsQuery(user)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                SearchTerm = searchTerm,
 | 
					                SearchTerm = searchTerm,
 | 
				
			||||||
                ExcludeItemTypes = excludeItemTypes.ToArray(excludeItemTypes.Count),
 | 
					                ExcludeItemTypes = excludeItemTypes.ToArray(),
 | 
				
			||||||
                IncludeItemTypes = includeItemTypes.ToArray(includeItemTypes.Count),
 | 
					                IncludeItemTypes = includeItemTypes.ToArray(),
 | 
				
			||||||
                Limit = query.Limit,
 | 
					                Limit = query.Limit,
 | 
				
			||||||
                IncludeItemsByName = string.IsNullOrEmpty(query.ParentId),
 | 
					                IncludeItemsByName = string.IsNullOrEmpty(query.ParentId),
 | 
				
			||||||
                ParentId = string.IsNullOrEmpty(query.ParentId) ? Guid.Empty : new Guid(query.ParentId),
 | 
					                ParentId = string.IsNullOrEmpty(query.ParentId) ? Guid.Empty : new Guid(query.ParentId),
 | 
				
			||||||
 | 
				
			|||||||
@ -354,7 +354,7 @@ namespace Emby.Server.Implementations.Library
 | 
				
			|||||||
                Limit = limit * 5,
 | 
					                Limit = limit * 5,
 | 
				
			||||||
                IsPlayed = isPlayed,
 | 
					                IsPlayed = isPlayed,
 | 
				
			||||||
                DtoOptions = options,
 | 
					                DtoOptions = options,
 | 
				
			||||||
                MediaTypes = mediaTypes.ToArray(mediaTypes.Count)
 | 
					                MediaTypes = mediaTypes.ToArray()
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (parents.Count == 0)
 | 
					            if (parents.Count == 0)
 | 
				
			||||||
 | 
				
			|||||||
@ -139,7 +139,7 @@ namespace Emby.Server.Implementations.LiveTv
 | 
				
			|||||||
                dto.ProgramId = GetInternalProgramId(info.ProgramId).ToString("N");
 | 
					                dto.ProgramId = GetInternalProgramId(info.ProgramId).ToString("N");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            dto.DayPattern = info.Days == null ? null : GetDayPattern(info.Days.ToArray(info.Days.Count));
 | 
					            dto.DayPattern = info.Days == null ? null : GetDayPattern(info.Days.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            FillImages(dto, info.Name, info.SeriesId);
 | 
					            FillImages(dto, info.Name, info.SeriesId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1140,7 +1140,7 @@ namespace Emby.Server.Implementations.LiveTv
 | 
				
			|||||||
            var dtoOptions = new DtoOptions();
 | 
					            var dtoOptions = new DtoOptions();
 | 
				
			||||||
            var fields = dtoOptions.Fields.ToList();
 | 
					            var fields = dtoOptions.Fields.ToList();
 | 
				
			||||||
            fields.Remove(ItemFields.BasicSyncInfo);
 | 
					            fields.Remove(ItemFields.BasicSyncInfo);
 | 
				
			||||||
            dtoOptions.Fields = fields.ToArray(fields.Count);
 | 
					            dtoOptions.Fields = fields.ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            progress.Report(100);
 | 
					            progress.Report(100);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -1458,16 +1458,16 @@ namespace Emby.Server.Implementations.LiveTv
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                MediaTypes = new[] { MediaType.Video },
 | 
					                MediaTypes = new[] { MediaType.Video },
 | 
				
			||||||
                Recursive = true,
 | 
					                Recursive = true,
 | 
				
			||||||
                AncestorIds = folderIds.ToArray(folderIds.Count),
 | 
					                AncestorIds = folderIds.ToArray(),
 | 
				
			||||||
                IsFolder = false,
 | 
					                IsFolder = false,
 | 
				
			||||||
                IsVirtualItem = false,
 | 
					                IsVirtualItem = false,
 | 
				
			||||||
                Limit = limit,
 | 
					                Limit = limit,
 | 
				
			||||||
                StartIndex = query.StartIndex,
 | 
					                StartIndex = query.StartIndex,
 | 
				
			||||||
                OrderBy = new[] { new ValueTuple<string, SortOrder>(ItemSortBy.DateCreated, SortOrder.Descending) },
 | 
					                OrderBy = new[] { new ValueTuple<string, SortOrder>(ItemSortBy.DateCreated, SortOrder.Descending) },
 | 
				
			||||||
                EnableTotalRecordCount = query.EnableTotalRecordCount,
 | 
					                EnableTotalRecordCount = query.EnableTotalRecordCount,
 | 
				
			||||||
                IncludeItemTypes = includeItemTypes.ToArray(includeItemTypes.Count),
 | 
					                IncludeItemTypes = includeItemTypes.ToArray(),
 | 
				
			||||||
                ExcludeItemTypes = excludeItemTypes.ToArray(excludeItemTypes.Count),
 | 
					                ExcludeItemTypes = excludeItemTypes.ToArray(),
 | 
				
			||||||
                Genres = genres.ToArray(genres.Count),
 | 
					                Genres = genres.ToArray(),
 | 
				
			||||||
                DtoOptions = dtoOptions
 | 
					                DtoOptions = dtoOptions
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1791,7 +1791,7 @@ namespace Emby.Server.Implementations.LiveTv
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var returnArray = returnList
 | 
					            var returnArray = returnList
 | 
				
			||||||
                .OrderBy(i => i.StartDate)
 | 
					                .OrderBy(i => i.StartDate)
 | 
				
			||||||
                .ToArray(returnList.Count);
 | 
					                .ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return new QueryResult<TimerInfoDto>
 | 
					            return new QueryResult<TimerInfoDto>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -2338,7 +2338,7 @@ namespace Emby.Server.Implementations.LiveTv
 | 
				
			|||||||
            fields.Remove(ItemFields.CanDownload);
 | 
					            fields.Remove(ItemFields.CanDownload);
 | 
				
			||||||
            fields.Remove(ItemFields.DisplayPreferencesId);
 | 
					            fields.Remove(ItemFields.DisplayPreferencesId);
 | 
				
			||||||
            fields.Remove(ItemFields.Etag);
 | 
					            fields.Remove(ItemFields.Etag);
 | 
				
			||||||
            options.Fields = fields.ToArray(fields.Count);
 | 
					            options.Fields = fields.ToArray();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Folder GetInternalLiveTvFolder(CancellationToken cancellationToken)
 | 
					        public Folder GetInternalLiveTvFolder(CancellationToken cancellationToken)
 | 
				
			||||||
@ -2373,7 +2373,7 @@ namespace Emby.Server.Implementations.LiveTv
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                info.Id = Guid.NewGuid().ToString("N");
 | 
					                info.Id = Guid.NewGuid().ToString("N");
 | 
				
			||||||
                list.Add(info);
 | 
					                list.Add(info);
 | 
				
			||||||
                config.TunerHosts = list.ToArray(list.Count);
 | 
					                config.TunerHosts = list.ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -2412,7 +2412,7 @@ namespace Emby.Server.Implementations.LiveTv
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                info.Id = Guid.NewGuid().ToString("N");
 | 
					                info.Id = Guid.NewGuid().ToString("N");
 | 
				
			||||||
                list.Add(info);
 | 
					                list.Add(info);
 | 
				
			||||||
                config.ListingProviders = list.ToArray(list.Count);
 | 
					                config.ListingProviders = list.ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -2451,7 +2451,7 @@ namespace Emby.Server.Implementations.LiveTv
 | 
				
			|||||||
                    Name = tunerChannelId,
 | 
					                    Name = tunerChannelId,
 | 
				
			||||||
                    Value = providerChannelId
 | 
					                    Value = providerChannelId
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
                listingsProviderInfo.ChannelMappings = list.ToArray(list.Count);
 | 
					                listingsProviderInfo.ChannelMappings = list.ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            _config.SaveConfiguration("livetv", config);
 | 
					            _config.SaveConfiguration("livetv", config);
 | 
				
			||||||
 | 
				
			|||||||
@ -106,7 +106,7 @@ namespace Emby.Server.Implementations.LiveTv
 | 
				
			|||||||
                    openKeys.Add(item.GetType().Name);
 | 
					                    openKeys.Add(item.GetType().Name);
 | 
				
			||||||
                    openKeys.Add(item.Id.ToString("N"));
 | 
					                    openKeys.Add(item.Id.ToString("N"));
 | 
				
			||||||
                    openKeys.Add(source.Id ?? string.Empty);
 | 
					                    openKeys.Add(source.Id ?? string.Empty);
 | 
				
			||||||
                    source.OpenToken = string.Join(StreamIdDelimeterString, openKeys.ToArray(openKeys.Count));
 | 
					                    source.OpenToken = string.Join(StreamIdDelimeterString, openKeys.ToArray());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // Dummy this up so that direct play checks can still run
 | 
					                // Dummy this up so that direct play checks can still run
 | 
				
			||||||
 | 
				
			|||||||
@ -706,7 +706,7 @@ namespace Emby.Server.Implementations.Networking
 | 
				
			|||||||
        public async Task<IpAddressInfo[]> GetHostAddressesAsync(string host)
 | 
					        public async Task<IpAddressInfo[]> GetHostAddressesAsync(string host)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var addresses = await Dns.GetHostAddressesAsync(host).ConfigureAwait(false);
 | 
					            var addresses = await Dns.GetHostAddressesAsync(host).ConfigureAwait(false);
 | 
				
			||||||
            return addresses.Select(ToIpAddressInfo).ToArray(addresses.Length);
 | 
					            return addresses.Select(ToIpAddressInfo).ToArray();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
 | 
				
			|||||||
@ -208,7 +208,7 @@ namespace Emby.Server.Implementations.Playlists
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var newList = playlist.LinkedChildren.ToList();
 | 
					            var newList = playlist.LinkedChildren.ToList();
 | 
				
			||||||
            newList.AddRange(list);
 | 
					            newList.AddRange(list);
 | 
				
			||||||
            playlist.LinkedChildren = newList.ToArray(newList.Count);
 | 
					            playlist.LinkedChildren = newList.ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
 | 
					            playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -290,7 +290,7 @@ namespace Emby.Server.Implementations.Playlists
 | 
				
			|||||||
                newList.Insert(newIndex, item);
 | 
					                newList.Insert(newIndex, item);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            playlist.LinkedChildren = newList.ToArray(newList.Count);
 | 
					            playlist.LinkedChildren = newList.ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
 | 
					            playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -145,7 +145,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                        _fileSystem.CreateDirectory(parentPath);
 | 
					                        _fileSystem.CreateDirectory(parentPath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        _fileSystem.WriteAllText(failHistoryPath, string.Join("|", previouslyFailedImages.ToArray(previouslyFailedImages.Count)));
 | 
					                        _fileSystem.WriteAllText(failHistoryPath, string.Join("|", previouslyFailedImages.ToArray()));
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    numComplete++;
 | 
					                    numComplete++;
 | 
				
			||||||
 | 
				
			|||||||
@ -9,7 +9,6 @@ using MediaBrowser.Common.Events;
 | 
				
			|||||||
using MediaBrowser.Common.Extensions;
 | 
					using MediaBrowser.Common.Extensions;
 | 
				
			||||||
using MediaBrowser.Common.Progress;
 | 
					using MediaBrowser.Common.Progress;
 | 
				
			||||||
using MediaBrowser.Model.Events;
 | 
					using MediaBrowser.Model.Events;
 | 
				
			||||||
using MediaBrowser.Model.Extensions;
 | 
					 | 
				
			||||||
using MediaBrowser.Model.IO;
 | 
					using MediaBrowser.Model.IO;
 | 
				
			||||||
using MediaBrowser.Model.Logging;
 | 
					using MediaBrowser.Model.Logging;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
@ -276,7 +275,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
 | 
				
			|||||||
            get
 | 
					            get
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var triggers = InternalTriggers;
 | 
					                var triggers = InternalTriggers;
 | 
				
			||||||
                return triggers.Select(i => i.Item1).ToArray(triggers.Length);
 | 
					                return triggers.Select(i => i.Item1).ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            set
 | 
					            set
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -290,7 +289,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                SaveTriggers(triggerList);
 | 
					                SaveTriggers(triggerList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                InternalTriggers = triggerList.Select(i => new Tuple<TaskTriggerInfo, ITaskTrigger>(i, GetTrigger(i))).ToArray(triggerList.Length);
 | 
					                InternalTriggers = triggerList.Select(i => new Tuple<TaskTriggerInfo, ITaskTrigger>(i, GetTrigger(i))).ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -241,7 +241,7 @@ namespace Emby.Server.Implementations.Security
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var whereTextWithoutPaging = whereClauses.Count == 0 ?
 | 
					            var whereTextWithoutPaging = whereClauses.Count == 0 ?
 | 
				
			||||||
              string.Empty :
 | 
					              string.Empty :
 | 
				
			||||||
              " where " + string.Join(" AND ", whereClauses.ToArray(whereClauses.Count));
 | 
					              " where " + string.Join(" AND ", whereClauses.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            commandText += whereTextWithoutPaging;
 | 
					            commandText += whereTextWithoutPaging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -298,7 +298,7 @@ namespace Emby.Server.Implementations.Security
 | 
				
			|||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        result.Items = list.ToArray(list.Count);
 | 
					                        result.Items = list.ToArray();
 | 
				
			||||||
                        return result;
 | 
					                        return result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    }, ReadTransactionMode);
 | 
					                    }, ReadTransactionMode);
 | 
				
			||||||
 | 
				
			|||||||
@ -181,7 +181,7 @@ namespace Emby.Server.Implementations.Services
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (reqFilters.Count > 0)
 | 
					                if (reqFilters.Count > 0)
 | 
				
			||||||
                    actionCtx.RequestFilters = reqFilters.OrderBy(i => i.Priority).ToArray(reqFilters.Count);
 | 
					                    actionCtx.RequestFilters = reqFilters.OrderBy(i => i.Priority).ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                actions.Add(actionCtx);
 | 
					                actions.Add(actionCtx);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
@ -132,13 +132,13 @@ namespace Emby.Server.Implementations.Services
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var components = componentsList.ToArray(componentsList.Count);
 | 
					            var components = componentsList.ToArray();
 | 
				
			||||||
            this.TotalComponentsCount = components.Length;
 | 
					            this.TotalComponentsCount = components.Length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            this.literalsToMatch = new string[this.TotalComponentsCount];
 | 
					            this.literalsToMatch = new string[this.TotalComponentsCount];
 | 
				
			||||||
            this.variablesNames = new string[this.TotalComponentsCount];
 | 
					            this.variablesNames = new string[this.TotalComponentsCount];
 | 
				
			||||||
            this.isWildcard = new bool[this.TotalComponentsCount];
 | 
					            this.isWildcard = new bool[this.TotalComponentsCount];
 | 
				
			||||||
            this.componentsWithSeparators = hasSeparators.ToArray(hasSeparators.Count);
 | 
					            this.componentsWithSeparators = hasSeparators.ToArray();
 | 
				
			||||||
            this.PathComponentsCount = this.componentsWithSeparators.Length;
 | 
					            this.PathComponentsCount = this.componentsWithSeparators.Length;
 | 
				
			||||||
            string firstLiteralMatch = null;
 | 
					            string firstLiteralMatch = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -297,7 +297,7 @@ namespace Emby.Server.Implementations.Services
 | 
				
			|||||||
                if (mi != null && mi.IsStatic) continue;
 | 
					                if (mi != null && mi.IsStatic) continue;
 | 
				
			||||||
                pis.Add(pi);
 | 
					                pis.Add(pi);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return pis.ToArray(pis.Count);
 | 
					            return pis.ToArray();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
@ -463,7 +463,7 @@ namespace Emby.Server.Implementations.Services
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            withPathInfoParts = totalComponents.ToArray(totalComponents.Count);
 | 
					            withPathInfoParts = totalComponents.ToArray();
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1042,7 +1042,7 @@ namespace Emby.Server.Implementations.Session
 | 
				
			|||||||
                command.PlayCommand = PlayCommand.PlayNow;
 | 
					                command.PlayCommand = PlayCommand.PlayNow;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            command.ItemIds = items.Select(i => i.Id).ToArray(items.Count);
 | 
					            command.ItemIds = items.Select(i => i.Id).ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (user != null)
 | 
					            if (user != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -1070,7 +1070,7 @@ namespace Emby.Server.Implementations.Session
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                        if (episodes.Count > 0)
 | 
					                        if (episodes.Count > 0)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            command.ItemIds = episodes.Select(i => i.Id).ToArray(episodes.Count);
 | 
					                            command.ItemIds = episodes.Select(i => i.Id).ToArray();
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@ -1316,7 +1316,7 @@ namespace Emby.Server.Implementations.Session
 | 
				
			|||||||
                    UserName = user.Name
 | 
					                    UserName = user.Name
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                session.AdditionalUsers = list.ToArray(list.Count);
 | 
					                session.AdditionalUsers = list.ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1345,7 +1345,7 @@ namespace Emby.Server.Implementations.Session
 | 
				
			|||||||
                var list = session.AdditionalUsers.ToList();
 | 
					                var list = session.AdditionalUsers.ToList();
 | 
				
			||||||
                list.Remove(user);
 | 
					                list.Remove(user);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                session.AdditionalUsers = list.ToArray(list.Count);
 | 
					                session.AdditionalUsers = list.ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1669,7 +1669,7 @@ namespace Emby.Server.Implementations.Session
 | 
				
			|||||||
                fields.Remove(ItemFields.Tags);
 | 
					                fields.Remove(ItemFields.Tags);
 | 
				
			||||||
                fields.Remove(ItemFields.ExtraIds);
 | 
					                fields.Remove(ItemFields.ExtraIds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                dtoOptions.Fields = fields.ToArray(fields.Count);
 | 
					                dtoOptions.Fields = fields.ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                _itemInfoDtoOptions = dtoOptions;
 | 
					                _itemInfoDtoOptions = dtoOptions;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
@ -143,7 +143,7 @@ namespace MediaBrowser.Api
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    var list = options.Fields.ToList();
 | 
					                    var list = options.Fields.ToList();
 | 
				
			||||||
                    list.Add(Model.Querying.ItemFields.RecursiveItemCount);
 | 
					                    list.Add(Model.Querying.ItemFields.RecursiveItemCount);
 | 
				
			||||||
                    options.Fields = list.ToArray(list.Count);
 | 
					                    options.Fields = list.ToArray();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (client.IndexOf("kodi", StringComparison.OrdinalIgnoreCase) != -1 ||
 | 
					                if (client.IndexOf("kodi", StringComparison.OrdinalIgnoreCase) != -1 ||
 | 
				
			||||||
@ -156,7 +156,7 @@ namespace MediaBrowser.Api
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    var list = options.Fields.ToList();
 | 
					                    var list = options.Fields.ToList();
 | 
				
			||||||
                    list.Add(Model.Querying.ItemFields.ChildCount);
 | 
					                    list.Add(Model.Querying.ItemFields.ChildCount);
 | 
				
			||||||
                    options.Fields = list.ToArray(list.Count);
 | 
					                    options.Fields = list.ToArray();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -974,7 +974,7 @@ namespace MediaBrowser.Api.LiveTv
 | 
				
			|||||||
            fields.Remove(ItemFields.CanDownload);
 | 
					            fields.Remove(ItemFields.CanDownload);
 | 
				
			||||||
            fields.Remove(ItemFields.DisplayPreferencesId);
 | 
					            fields.Remove(ItemFields.DisplayPreferencesId);
 | 
				
			||||||
            fields.Remove(ItemFields.Etag);
 | 
					            fields.Remove(ItemFields.Etag);
 | 
				
			||||||
            options.Fields = fields.ToArray(fields.Count);
 | 
					            options.Fields = fields.ToArray();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public object Get(GetChannel request)
 | 
					        public object Get(GetChannel request)
 | 
				
			||||||
 | 
				
			|||||||
@ -123,7 +123,7 @@ namespace MediaBrowser.Api.Movies
 | 
				
			|||||||
            var itemsResult = _libraryManager.GetItemList(new InternalItemsQuery(user)
 | 
					            var itemsResult = _libraryManager.GetItemList(new InternalItemsQuery(user)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Limit = request.Limit,
 | 
					                Limit = request.Limit,
 | 
				
			||||||
                IncludeItemTypes = itemTypes.ToArray(itemTypes.Count),
 | 
					                IncludeItemTypes = itemTypes.ToArray(),
 | 
				
			||||||
                IsMovie = true,
 | 
					                IsMovie = true,
 | 
				
			||||||
                SimilarTo = item,
 | 
					                SimilarTo = item,
 | 
				
			||||||
                EnableGroupByMetadataKey = true,
 | 
					                EnableGroupByMetadataKey = true,
 | 
				
			||||||
@ -177,12 +177,12 @@ namespace MediaBrowser.Api.Movies
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var likedMovies = _libraryManager.GetItemList(new InternalItemsQuery(user)
 | 
					            var likedMovies = _libraryManager.GetItemList(new InternalItemsQuery(user)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                IncludeItemTypes = itemTypes.ToArray(itemTypes.Count),
 | 
					                IncludeItemTypes = itemTypes.ToArray(),
 | 
				
			||||||
                IsMovie = true,
 | 
					                IsMovie = true,
 | 
				
			||||||
                OrderBy = new[] { ItemSortBy.Random }.Select(i => new ValueTuple<string, SortOrder>(i, SortOrder.Descending)).ToArray(),
 | 
					                OrderBy = new[] { ItemSortBy.Random }.Select(i => new ValueTuple<string, SortOrder>(i, SortOrder.Descending)).ToArray(),
 | 
				
			||||||
                Limit = 10,
 | 
					                Limit = 10,
 | 
				
			||||||
                IsFavoriteOrLiked = true,
 | 
					                IsFavoriteOrLiked = true,
 | 
				
			||||||
                ExcludeItemIds = recentlyPlayedMovies.Select(i => i.Id).ToArray(recentlyPlayedMovies.Count),
 | 
					                ExcludeItemIds = recentlyPlayedMovies.Select(i => i.Id).ToArray(),
 | 
				
			||||||
                EnableGroupByMetadataKey = true,
 | 
					                EnableGroupByMetadataKey = true,
 | 
				
			||||||
                ParentId = parentIdGuid,
 | 
					                ParentId = parentIdGuid,
 | 
				
			||||||
                Recursive = true,
 | 
					                Recursive = true,
 | 
				
			||||||
@ -265,7 +265,7 @@ namespace MediaBrowser.Api.Movies
 | 
				
			|||||||
                    // Account for duplicates by imdb id, since the database doesn't support this yet
 | 
					                    // Account for duplicates by imdb id, since the database doesn't support this yet
 | 
				
			||||||
                    Limit = itemLimit + 2,
 | 
					                    Limit = itemLimit + 2,
 | 
				
			||||||
                    PersonTypes = new[] { PersonType.Director },
 | 
					                    PersonTypes = new[] { PersonType.Director },
 | 
				
			||||||
                    IncludeItemTypes = itemTypes.ToArray(itemTypes.Count),
 | 
					                    IncludeItemTypes = itemTypes.ToArray(),
 | 
				
			||||||
                    IsMovie = true,
 | 
					                    IsMovie = true,
 | 
				
			||||||
                    EnableGroupByMetadataKey = true,
 | 
					                    EnableGroupByMetadataKey = true,
 | 
				
			||||||
                    DtoOptions = dtoOptions
 | 
					                    DtoOptions = dtoOptions
 | 
				
			||||||
@ -305,7 +305,7 @@ namespace MediaBrowser.Api.Movies
 | 
				
			|||||||
                    Person = name,
 | 
					                    Person = name,
 | 
				
			||||||
                    // Account for duplicates by imdb id, since the database doesn't support this yet
 | 
					                    // Account for duplicates by imdb id, since the database doesn't support this yet
 | 
				
			||||||
                    Limit = itemLimit + 2,
 | 
					                    Limit = itemLimit + 2,
 | 
				
			||||||
                    IncludeItemTypes = itemTypes.ToArray(itemTypes.Count),
 | 
					                    IncludeItemTypes = itemTypes.ToArray(),
 | 
				
			||||||
                    IsMovie = true,
 | 
					                    IsMovie = true,
 | 
				
			||||||
                    EnableGroupByMetadataKey = true,
 | 
					                    EnableGroupByMetadataKey = true,
 | 
				
			||||||
                    DtoOptions = dtoOptions
 | 
					                    DtoOptions = dtoOptions
 | 
				
			||||||
@ -343,7 +343,7 @@ namespace MediaBrowser.Api.Movies
 | 
				
			|||||||
                var similar = _libraryManager.GetItemList(new InternalItemsQuery(user)
 | 
					                var similar = _libraryManager.GetItemList(new InternalItemsQuery(user)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    Limit = itemLimit,
 | 
					                    Limit = itemLimit,
 | 
				
			||||||
                    IncludeItemTypes = itemTypes.ToArray(itemTypes.Count),
 | 
					                    IncludeItemTypes = itemTypes.ToArray(),
 | 
				
			||||||
                    IsMovie = true,
 | 
					                    IsMovie = true,
 | 
				
			||||||
                    SimilarTo = item,
 | 
					                    SimilarTo = item,
 | 
				
			||||||
                    EnableGroupByMetadataKey = true,
 | 
					                    EnableGroupByMetadataKey = true,
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,6 @@ using System.Linq;
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using MediaBrowser.Model.Dto;
 | 
					using MediaBrowser.Model.Dto;
 | 
				
			||||||
using MediaBrowser.Model.Services;
 | 
					using MediaBrowser.Model.Services;
 | 
				
			||||||
using MediaBrowser.Model.Extensions;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Api
 | 
					namespace MediaBrowser.Api
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -81,7 +80,7 @@ namespace MediaBrowser.Api
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var query = new InternalItemsQuery(user)
 | 
					            var query = new InternalItemsQuery(user)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                IncludeItemTypes = includeTypes.Select(i => i.Name).ToArray(includeTypes.Length),
 | 
					                IncludeItemTypes = includeTypes.Select(i => i.Name).ToArray(),
 | 
				
			||||||
                Recursive = true,
 | 
					                Recursive = true,
 | 
				
			||||||
                DtoOptions = dtoOptions
 | 
					                DtoOptions = dtoOptions
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
				
			|||||||
@ -206,7 +206,7 @@ namespace MediaBrowser.Api.UserLibrary
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            return new QueryResult<BaseItemDto>
 | 
					            return new QueryResult<BaseItemDto>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Items = dtos.ToArray(result.Items.Length),
 | 
					                Items = dtos.ToArray(),
 | 
				
			||||||
                TotalRecordCount = result.TotalRecordCount
 | 
					                TotalRecordCount = result.TotalRecordCount
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -93,7 +93,7 @@ namespace MediaBrowser.Api.UserLibrary
 | 
				
			|||||||
            fields.Add(ItemFields.PrimaryImageAspectRatio);
 | 
					            fields.Add(ItemFields.PrimaryImageAspectRatio);
 | 
				
			||||||
            fields.Add(ItemFields.DisplayPreferencesId);
 | 
					            fields.Add(ItemFields.DisplayPreferencesId);
 | 
				
			||||||
            fields.Remove(ItemFields.BasicSyncInfo);
 | 
					            fields.Remove(ItemFields.BasicSyncInfo);
 | 
				
			||||||
            dtoOptions.Fields = fields.ToArray(fields.Count);
 | 
					            dtoOptions.Fields = fields.ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var user = _userManager.GetUserById(request.UserId);
 | 
					            var user = _userManager.GetUserById(request.UserId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1295,7 +1295,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return string.Join("/", terms.ToArray(terms.Count));
 | 
					            return string.Join("/", terms.ToArray());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
@ -1536,7 +1536,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var newThemeVideos = LoadThemeVideos(fileSystemChildren, options.DirectoryService);
 | 
					            var newThemeVideos = LoadThemeVideos(fileSystemChildren, options.DirectoryService);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var newThemeVideoIds = newThemeVideos.Select(i => i.Id).ToArray(newThemeVideos.Length);
 | 
					            var newThemeVideoIds = newThemeVideos.Select(i => i.Id).ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var themeVideosChanged = !item.ThemeVideoIds.SequenceEqual(newThemeVideoIds);
 | 
					            var themeVideosChanged = !item.ThemeVideoIds.SequenceEqual(newThemeVideoIds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1573,7 +1573,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
        private async Task<bool> RefreshThemeSongs(BaseItem item, MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
 | 
					        private async Task<bool> RefreshThemeSongs(BaseItem item, MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var newThemeSongs = LoadThemeSongs(fileSystemChildren, options.DirectoryService);
 | 
					            var newThemeSongs = LoadThemeSongs(fileSystemChildren, options.DirectoryService);
 | 
				
			||||||
            var newThemeSongIds = newThemeSongs.Select(i => i.Id).ToArray(newThemeSongs.Length);
 | 
					            var newThemeSongIds = newThemeSongs.Select(i => i.Id).ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var themeSongsChanged = !item.ThemeSongIds.SequenceEqual(newThemeSongIds);
 | 
					            var themeSongsChanged = !item.ThemeSongIds.SequenceEqual(newThemeSongIds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2110,9 +2110,8 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var list = current.ToArray(current.Length + 1);
 | 
					                    var list = 
 | 
				
			||||||
                    list[list.Length - 1] = name;
 | 
					                    Studios = current.Concat(new [] { name }).ToArray();
 | 
				
			||||||
                    Studios = list;
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -2252,9 +2251,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var currentCount = ImageInfos.Length;
 | 
					                var currentCount = ImageInfos.Length;
 | 
				
			||||||
                var newList = ImageInfos.ToArray(currentCount + 1);
 | 
					                ImageInfos = ImageInfos.Concat(new [] { image }) .ToArray();
 | 
				
			||||||
                newList[currentCount] = image;
 | 
					 | 
				
			||||||
                ImageInfos = newList;
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2269,10 +2266,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (image == null)
 | 
					            if (image == null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var currentCount = ImageInfos.Length;
 | 
					                ImageInfos = ImageInfos.Concat(new [] { GetImageInfo(file, type) }) .ToArray();
 | 
				
			||||||
                var newList = ImageInfos.ToArray(currentCount + 1);
 | 
					 | 
				
			||||||
                newList[currentCount] = GetImageInfo(file, type);
 | 
					 | 
				
			||||||
                ImageInfos = newList;
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -2486,16 +2480,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (newImageList.Count > 0)
 | 
					            if (newImageList.Count > 0)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var currentCount = ImageInfos.Length;
 | 
					                ImageInfos = ImageInfos.Concat(newImageList.Select(i => GetImageInfo(i, imageType))).ToArray();
 | 
				
			||||||
                var newList = ImageInfos.ToArray(currentCount + newImageList.Count);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                foreach (var image in newImageList)
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    newList[currentCount] = GetImageInfo(image, imageType);
 | 
					 | 
				
			||||||
                    currentCount++;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                ImageInfos = newList;
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return imageUpdated || newImageList.Count > 0;
 | 
					            return imageUpdated || newImageList.Count > 0;
 | 
				
			||||||
@ -2537,7 +2522,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
            var extensions = new List<string> { ".nfo", ".xml", ".srt", ".vtt", ".sub", ".idx", ".txt", ".edl", ".bif", ".smi", ".ttml" };
 | 
					            var extensions = new List<string> { ".nfo", ".xml", ".srt", ".vtt", ".sub", ".idx", ".txt", ".edl", ".bif", ".smi", ".ttml" };
 | 
				
			||||||
            extensions.AddRange(SupportedImageExtensions);
 | 
					            extensions.AddRange(SupportedImageExtensions);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return FileSystem.GetFiles(FileSystem.GetDirectoryName(Path), extensions.ToArray(extensions.Count), false, false)
 | 
					            return FileSystem.GetFiles(FileSystem.GetDirectoryName(Path), extensions.ToArray(), false, false)
 | 
				
			||||||
                .Where(i => System.IO.Path.GetFileNameWithoutExtension(i.FullName).StartsWith(filename, StringComparison.OrdinalIgnoreCase))
 | 
					                .Where(i => System.IO.Path.GetFileNameWithoutExtension(i.FullName).StartsWith(filename, StringComparison.OrdinalIgnoreCase))
 | 
				
			||||||
                .ToList();
 | 
					                .ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -2776,7 +2761,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var list = GetEtagValues(user);
 | 
					            var list = GetEtagValues(user);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return string.Join("|", list.ToArray(list.Count)).GetMD5().ToString("N");
 | 
					            return string.Join("|", list.ToArray()).GetMD5().ToString("N");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected virtual List<string> GetEtagValues(User user)
 | 
					        protected virtual List<string> GetEtagValues(User user)
 | 
				
			||||||
 | 
				
			|||||||
@ -275,7 +275,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var changed = !linkedChildren.SequenceEqual(LinkedChildren, new LinkedChildComparer(FileSystem));
 | 
					            var changed = !linkedChildren.SequenceEqual(LinkedChildren, new LinkedChildComparer(FileSystem));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            LinkedChildren = linkedChildren.ToArray(linkedChildren.Count);
 | 
					            LinkedChildren = linkedChildren.ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var folderIds = PhysicalFolderIds;
 | 
					            var folderIds = PhysicalFolderIds;
 | 
				
			||||||
            var newFolderIds = physicalFolders.Select(i => i.Id).ToArray();
 | 
					            var newFolderIds = physicalFolders.Select(i => i.Id).ToArray();
 | 
				
			||||||
 | 
				
			|||||||
@ -35,10 +35,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var list = item.RemoteTrailers.ToArray(item.RemoteTrailers.Length + 1);
 | 
					                    item.RemoteTrailers = item.RemoteTrailers.Concat(new [] { mediaUrl }).ToArray();
 | 
				
			||||||
                    list[list.Length - 1] = mediaUrl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    item.RemoteTrailers = list;
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -914,7 +914,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
                    // Try to preserve order
 | 
					                    // Try to preserve order
 | 
				
			||||||
                    return result.OrderBy(i => ids.IndexOf(i.Id)).ToArray();
 | 
					                    return result.OrderBy(i => ids.IndexOf(i.Id)).ToArray();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                return result.ToArray(result.Count);
 | 
					                return result.ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return GetItemsInternal(query).Items;
 | 
					            return GetItemsInternal(query).Items;
 | 
				
			||||||
@ -1608,7 +1608,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
                    Logger.Info("Shortcut links have changed for {0}", Path);
 | 
					                    Logger.Info("Shortcut links have changed for {0}", Path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    newShortcutLinks.AddRange(LinkedChildren.Where(i => i.Type == LinkedChildType.Manual));
 | 
					                    newShortcutLinks.AddRange(LinkedChildren.Where(i => i.Type == LinkedChildType.Manual));
 | 
				
			||||||
                    LinkedChildren = newShortcutLinks.ToArray(newShortcutLinks.Count);
 | 
					                    LinkedChildren = newShortcutLinks.ToArray();
 | 
				
			||||||
                    return true;
 | 
					                    return true;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,5 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using MediaBrowser.Model.Extensions;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Controller.Entities
 | 
					namespace MediaBrowser.Controller.Entities
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -24,10 +22,7 @@ namespace MediaBrowser.Controller.Entities
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var list = current.ToArray(current.Length + 1);
 | 
					                    item.Tags = current.Concat(new [] { name }).ToArray();
 | 
				
			||||||
                    list[list.Length - 1] = name;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    item.Tags = list;
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,6 @@ using System.Collections.Generic;
 | 
				
			|||||||
using System.Xml;
 | 
					using System.Xml;
 | 
				
			||||||
using MediaBrowser.Model.IO;
 | 
					using MediaBrowser.Model.IO;
 | 
				
			||||||
using MediaBrowser.Model.Xml;
 | 
					using MediaBrowser.Model.Xml;
 | 
				
			||||||
using MediaBrowser.Model.Extensions;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.LocalMetadata.Parsers
 | 
					namespace MediaBrowser.LocalMetadata.Parsers
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -85,7 +84,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            item.Item.LinkedChildren = list.ToArray(list.Count);
 | 
					            item.Item.LinkedChildren = list.ToArray();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public BoxSetXmlParser(ILogger logger, IProviderManager providerManager, IXmlReaderSettingsFactory xmlReaderSettingsFactory, IFileSystem fileSystem) : base(logger, providerManager, xmlReaderSettingsFactory, fileSystem)
 | 
					        public BoxSetXmlParser(ILogger logger, IProviderManager providerManager, IXmlReaderSettingsFactory xmlReaderSettingsFactory, IFileSystem fileSystem) : base(logger, providerManager, xmlReaderSettingsFactory, fileSystem)
 | 
				
			||||||
 | 
				
			|||||||
@ -95,7 +95,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            item.LinkedChildren = list.ToArray(list.Count);
 | 
					            item.LinkedChildren = list.ToArray();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public PlaylistXmlParser(ILogger logger, IProviderManager providerManager, IXmlReaderSettingsFactory xmlReaderSettingsFactory, IFileSystem fileSystem) : base(logger, providerManager, xmlReaderSettingsFactory, fileSystem)
 | 
					        public PlaylistXmlParser(ILogger logger, IProviderManager providerManager, IXmlReaderSettingsFactory xmlReaderSettingsFactory, IFileSystem fileSystem) : base(logger, providerManager, xmlReaderSettingsFactory, fileSystem)
 | 
				
			||||||
 | 
				
			|||||||
@ -101,7 +101,7 @@ namespace MediaBrowser.Model.Dlna
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    list.Add(MediaFormatProfile.MPEG_TS_JP_T);
 | 
					                    list.Add(MediaFormatProfile.MPEG_TS_JP_T);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                return list.ToArray(list.Count);
 | 
					                return list.ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (StringHelper.EqualsIgnoreCase(videoCodec, "h264"))
 | 
					            if (StringHelper.EqualsIgnoreCase(videoCodec, "h264"))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
				
			|||||||
@ -186,7 +186,7 @@ namespace MediaBrowser.Model.Dlna
 | 
				
			|||||||
                list.Add(string.Format("{0}={1}", pair.Name, encodedValue));
 | 
					                list.Add(string.Format("{0}={1}", pair.Name, encodedValue));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            string queryString = string.Join("&", list.ToArray(list.Count));
 | 
					            string queryString = string.Join("&", list.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return GetUrl(baseUrl, queryString);
 | 
					            return GetUrl(baseUrl, queryString);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,5 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using MediaBrowser.Model.Dlna;
 | 
					using MediaBrowser.Model.Dlna;
 | 
				
			||||||
using MediaBrowser.Model.Extensions;
 | 
					using MediaBrowser.Model.Extensions;
 | 
				
			||||||
@ -104,7 +105,7 @@ namespace MediaBrowser.Model.Entities
 | 
				
			|||||||
                        attributes.Add("Default");
 | 
					                        attributes.Add("Default");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    return string.Join(" ", attributes.ToArray(attributes.Count));
 | 
					                    return string.Join(" ", attributes.ToArray());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (Type == MediaStreamType.Video)
 | 
					                if (Type == MediaStreamType.Video)
 | 
				
			||||||
@ -123,7 +124,7 @@ namespace MediaBrowser.Model.Entities
 | 
				
			|||||||
                        attributes.Add(Codec.ToUpper());
 | 
					                        attributes.Add(Codec.ToUpper());
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    return string.Join(" ", attributes.ToArray(attributes.Count));
 | 
					                    return string.Join(" ", attributes.ToArray());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (Type == MediaStreamType.Subtitle)
 | 
					                if (Type == MediaStreamType.Subtitle)
 | 
				
			||||||
@ -154,7 +155,7 @@ namespace MediaBrowser.Model.Entities
 | 
				
			|||||||
                        attributes.Add("Forced");
 | 
					                        attributes.Add("Forced");
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    string name = string.Join(" ", attributes.ToArray(attributes.Count));
 | 
					                    string name = string.Join(" ", attributes.ToArray());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    return name;
 | 
					                    return name;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,7 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TODO: @bond Remove
 | 
				
			||||||
namespace MediaBrowser.Model.Extensions
 | 
					namespace MediaBrowser.Model.Extensions
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // MoreLINQ - Extensions to LINQ to Objects
 | 
					    // MoreLINQ - Extensions to LINQ to Objects
 | 
				
			||||||
@ -42,19 +43,6 @@ namespace MediaBrowser.Model.Extensions
 | 
				
			|||||||
            return source.DistinctBy(keySelector, null);
 | 
					            return source.DistinctBy(keySelector, null);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static TSource[] ToArray<TSource>(this IEnumerable<TSource> source, int count)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            if (source == null) throw new ArgumentNullException("source");
 | 
					 | 
				
			||||||
            if (count < 0) throw new ArgumentOutOfRangeException("count");
 | 
					 | 
				
			||||||
            var array = new TSource[count];
 | 
					 | 
				
			||||||
            int i = 0;
 | 
					 | 
				
			||||||
            foreach (var item in source)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                array[i++] = item;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return array;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// Returns all distinct elements of the given source, where "distinctness"
 | 
					        /// Returns all distinct elements of the given source, where "distinctness"
 | 
				
			||||||
        /// is determined via a projection and the specified comparer for the projected type.
 | 
					        /// is determined via a projection and the specified comparer for the projected type.
 | 
				
			||||||
 | 
				
			|||||||
@ -2,8 +2,6 @@
 | 
				
			|||||||
using System.Collections;
 | 
					using System.Collections;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
using MediaBrowser.Model.Services;
 | 
					 | 
				
			||||||
using MediaBrowser.Model.Extensions;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Model.Services
 | 
					namespace MediaBrowser.Model.Services
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -586,7 +584,7 @@ namespace MediaBrowser.Model.Services
 | 
				
			|||||||
                    WriteCharBytes(bytes, ch, e);
 | 
					                    WriteCharBytes(bytes, ch, e);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            byte[] buf = bytes.ToArray(bytes.Count);
 | 
					            byte[] buf = bytes.ToArray();
 | 
				
			||||||
            bytes = null;
 | 
					            bytes = null;
 | 
				
			||||||
            return e.GetString(buf, 0, buf.Length);
 | 
					            return e.GetString(buf, 0, buf.Length);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using MediaBrowser.Model.Dto;
 | 
					using MediaBrowser.Model.Dto;
 | 
				
			||||||
using MediaBrowser.Model.Extensions;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Model.Services
 | 
					namespace MediaBrowser.Model.Services
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -221,7 +220,7 @@ namespace MediaBrowser.Model.Services
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        public override String ToString()
 | 
					        public override String ToString()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var vals = this.Select(GetQueryStringValue).ToArray(this.Count);
 | 
					            var vals = this.Select(GetQueryStringValue).ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return string.Join("&", vals);
 | 
					            return string.Join("&", vals);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -551,7 +551,7 @@ namespace MediaBrowser.Providers.Manager
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    list.Add(Path.Combine(item.ContainingFolderPath, "extrathumbs", "thumb" + outputIndex.ToString(UsCulture) + extension));
 | 
					                    list.Add(Path.Combine(item.ContainingFolderPath, "extrathumbs", "thumb" + outputIndex.ToString(UsCulture) + extension));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                return list.ToArray(list.Count);
 | 
					                return list.ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (type == ImageType.Primary)
 | 
					            if (type == ImageType.Primary)
 | 
				
			||||||
 | 
				
			|||||||
@ -522,7 +522,7 @@ namespace MediaBrowser.Providers.Manager
 | 
				
			|||||||
                Type = MetadataPluginType.SubtitleFetcher
 | 
					                Type = MetadataPluginType.SubtitleFetcher
 | 
				
			||||||
            }));
 | 
					            }));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            summary.Plugins = pluginList.ToArray(pluginList.Count);
 | 
					            summary.Plugins = pluginList.ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var supportedImageTypes = imageProviders.OfType<IRemoteImageProvider>()
 | 
					            var supportedImageTypes = imageProviders.OfType<IRemoteImageProvider>()
 | 
				
			||||||
                .SelectMany(i => i.GetSupportedImages(dummy))
 | 
					                .SelectMany(i => i.GetSupportedImages(dummy))
 | 
				
			||||||
 | 
				
			|||||||
@ -145,7 +145,7 @@ namespace MediaBrowser.Providers.Movies
 | 
				
			|||||||
                movie.ProductionLocations = movieData
 | 
					                movie.ProductionLocations = movieData
 | 
				
			||||||
                    .production_countries
 | 
					                    .production_countries
 | 
				
			||||||
                    .Select(i => i.name)
 | 
					                    .Select(i => i.name)
 | 
				
			||||||
                    .ToArray(movieData.production_countries.Count);
 | 
					                    .ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            movie.SetProviderId(MetadataProviders.Tmdb, movieData.id.ToString(_usCulture));
 | 
					            movie.SetProviderId(MetadataProviders.Tmdb, movieData.id.ToString(_usCulture));
 | 
				
			||||||
 | 
				
			|||||||
@ -279,7 +279,7 @@ namespace MediaBrowser.Providers.Movies
 | 
				
			|||||||
                languages.Add("en");
 | 
					                languages.Add("en");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return string.Join(",", languages.ToArray(languages.Count));
 | 
					            return string.Join(",", languages.ToArray());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static string NormalizeLanguage(string language)
 | 
					        public static string NormalizeLanguage(string language)
 | 
				
			||||||
 | 
				
			|||||||
@ -17,7 +17,6 @@ using System.Threading.Tasks;
 | 
				
			|||||||
using System.Xml;
 | 
					using System.Xml;
 | 
				
			||||||
using MediaBrowser.Model.Serialization;
 | 
					using MediaBrowser.Model.Serialization;
 | 
				
			||||||
using MediaBrowser.Model.Xml;
 | 
					using MediaBrowser.Model.Xml;
 | 
				
			||||||
using MediaBrowser.Model.Extensions;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MediaBrowser.Providers.Music
 | 
					namespace MediaBrowser.Providers.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
				
			|||||||
@ -236,7 +236,7 @@ namespace MediaBrowser.Providers.TV
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (seriesInfo.networks != null)
 | 
					            if (seriesInfo.networks != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                series.Studios = seriesInfo.networks.Select(i => i.name).ToArray(seriesInfo.networks.Count);
 | 
					                series.Studios = seriesInfo.networks.Select(i => i.name).ToArray();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (seriesInfo.genres != null)
 | 
					            if (seriesInfo.genres != null)
 | 
				
			||||||
 | 
				
			|||||||
@ -95,7 +95,7 @@ namespace Mono.Nat.Pmp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            try
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                byte[] buffer = package.ToArray(package.Count);
 | 
					                byte[] buffer = package.ToArray();
 | 
				
			||||||
                int attempt = 0;
 | 
					                int attempt = 0;
 | 
				
			||||||
                int delay = PmpConstants.RetryDelay;
 | 
					                int delay = PmpConstants.RetryDelay;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user