mirror of https://github.com/jellyfin/jellyfin.git
Eliminate circular dependency between LibraryManager and ImageProcessor
This commit is contained in:
parent
11693d6024
commit
efe3ebaab8
|
@ -33,7 +33,6 @@ namespace Emby.Drawing
|
||||||
private readonly IFileSystem _fileSystem;
|
private readonly IFileSystem _fileSystem;
|
||||||
private readonly IServerApplicationPaths _appPaths;
|
private readonly IServerApplicationPaths _appPaths;
|
||||||
private readonly IImageEncoder _imageEncoder;
|
private readonly IImageEncoder _imageEncoder;
|
||||||
private readonly Func<ILibraryManager> _libraryManager;
|
|
||||||
private readonly Func<IMediaEncoder> _mediaEncoder;
|
private readonly Func<IMediaEncoder> _mediaEncoder;
|
||||||
|
|
||||||
private bool _disposed = false;
|
private bool _disposed = false;
|
||||||
|
@ -45,20 +44,17 @@ namespace Emby.Drawing
|
||||||
/// <param name="appPaths">The server application paths.</param>
|
/// <param name="appPaths">The server application paths.</param>
|
||||||
/// <param name="fileSystem">The filesystem.</param>
|
/// <param name="fileSystem">The filesystem.</param>
|
||||||
/// <param name="imageEncoder">The image encoder.</param>
|
/// <param name="imageEncoder">The image encoder.</param>
|
||||||
/// <param name="libraryManager">The library manager.</param>
|
|
||||||
/// <param name="mediaEncoder">The media encoder.</param>
|
/// <param name="mediaEncoder">The media encoder.</param>
|
||||||
public ImageProcessor(
|
public ImageProcessor(
|
||||||
ILogger<ImageProcessor> logger,
|
ILogger<ImageProcessor> logger,
|
||||||
IServerApplicationPaths appPaths,
|
IServerApplicationPaths appPaths,
|
||||||
IFileSystem fileSystem,
|
IFileSystem fileSystem,
|
||||||
IImageEncoder imageEncoder,
|
IImageEncoder imageEncoder,
|
||||||
Func<ILibraryManager> libraryManager,
|
|
||||||
Func<IMediaEncoder> mediaEncoder)
|
Func<IMediaEncoder> mediaEncoder)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
_imageEncoder = imageEncoder;
|
_imageEncoder = imageEncoder;
|
||||||
_libraryManager = libraryManager;
|
|
||||||
_mediaEncoder = mediaEncoder;
|
_mediaEncoder = mediaEncoder;
|
||||||
_appPaths = appPaths;
|
_appPaths = appPaths;
|
||||||
}
|
}
|
||||||
|
@ -126,21 +122,9 @@ namespace Emby.Drawing
|
||||||
throw new ArgumentNullException(nameof(options));
|
throw new ArgumentNullException(nameof(options));
|
||||||
}
|
}
|
||||||
|
|
||||||
var libraryManager = _libraryManager();
|
|
||||||
|
|
||||||
ItemImageInfo originalImage = options.Image;
|
ItemImageInfo originalImage = options.Image;
|
||||||
BaseItem item = options.Item;
|
BaseItem item = options.Item;
|
||||||
|
|
||||||
if (!originalImage.IsLocalFile)
|
|
||||||
{
|
|
||||||
if (item == null)
|
|
||||||
{
|
|
||||||
item = libraryManager.GetItemById(options.ItemId);
|
|
||||||
}
|
|
||||||
|
|
||||||
originalImage = await libraryManager.ConvertImageToLocal(item, originalImage, options.ImageIndex).ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
string originalImagePath = originalImage.Path;
|
string originalImagePath = originalImage.Path;
|
||||||
DateTime dateModified = originalImage.DateModified;
|
DateTime dateModified = originalImage.DateModified;
|
||||||
ImageDimensions? originalImageSize = null;
|
ImageDimensions? originalImageSize = null;
|
||||||
|
@ -312,10 +296,6 @@ namespace Emby.Drawing
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public ImageDimensions GetImageDimensions(BaseItem item, ItemImageInfo info)
|
public ImageDimensions GetImageDimensions(BaseItem item, ItemImageInfo info)
|
||||||
=> GetImageDimensions(item, info, true);
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
public ImageDimensions GetImageDimensions(BaseItem item, ItemImageInfo info, bool updateItem)
|
|
||||||
{
|
{
|
||||||
int width = info.Width;
|
int width = info.Width;
|
||||||
int height = info.Height;
|
int height = info.Height;
|
||||||
|
@ -332,11 +312,6 @@ namespace Emby.Drawing
|
||||||
info.Width = size.Width;
|
info.Width = size.Width;
|
||||||
info.Height = size.Height;
|
info.Height = size.Height;
|
||||||
|
|
||||||
if (updateItem)
|
|
||||||
{
|
|
||||||
_libraryManager().UpdateImages(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -160,7 +160,7 @@ namespace Emby.Photos
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var size = _imageProcessor.GetImageDimensions(item, img, false);
|
var size = _imageProcessor.GetImageDimensions(item, img);
|
||||||
|
|
||||||
if (size.Width > 0 && size.Height > 0)
|
if (size.Width > 0 && size.Height > 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -723,7 +723,7 @@ namespace Emby.Server.Implementations
|
||||||
serviceCollection.AddSingleton<IHttpListener, WebSocketSharpListener>();
|
serviceCollection.AddSingleton<IHttpListener, WebSocketSharpListener>();
|
||||||
serviceCollection.AddSingleton<IHttpServer, HttpListenerHost>();
|
serviceCollection.AddSingleton<IHttpServer, HttpListenerHost>();
|
||||||
|
|
||||||
ImageProcessor = new ImageProcessor(LoggerFactory.CreateLogger<ImageProcessor>(), ServerConfigurationManager.ApplicationPaths, FileSystemManager, ImageEncoder, () => LibraryManager, () => MediaEncoder);
|
ImageProcessor = new ImageProcessor(LoggerFactory.CreateLogger<ImageProcessor>(), ServerConfigurationManager.ApplicationPaths, FileSystemManager, ImageEncoder, () => MediaEncoder);
|
||||||
serviceCollection.AddSingleton(ImageProcessor);
|
serviceCollection.AddSingleton(ImageProcessor);
|
||||||
|
|
||||||
serviceCollection.AddSingleton<ITVSeriesManager, TVSeriesManager>();
|
serviceCollection.AddSingleton<ITVSeriesManager, TVSeriesManager>();
|
||||||
|
|
|
@ -332,7 +332,8 @@ namespace MediaBrowser.Api.Images
|
||||||
var fileInfo = _fileSystem.GetFileInfo(info.Path);
|
var fileInfo = _fileSystem.GetFileInfo(info.Path);
|
||||||
length = fileInfo.Length;
|
length = fileInfo.Length;
|
||||||
|
|
||||||
ImageDimensions size = _imageProcessor.GetImageDimensions(item, info, true);
|
ImageDimensions size = _imageProcessor.GetImageDimensions(item, info);
|
||||||
|
_libraryManager.UpdateImages(item);
|
||||||
width = size.Width;
|
width = size.Width;
|
||||||
height = size.Height;
|
height = size.Height;
|
||||||
|
|
||||||
|
@ -606,6 +607,12 @@ namespace MediaBrowser.Api.Images
|
||||||
IDictionary<string, string> headers,
|
IDictionary<string, string> headers,
|
||||||
bool isHeadRequest)
|
bool isHeadRequest)
|
||||||
{
|
{
|
||||||
|
if (!image.IsLocalFile)
|
||||||
|
{
|
||||||
|
item ??= _libraryManager.GetItemById(itemId);
|
||||||
|
image = await _libraryManager.ConvertImageToLocal(item, image, request.Index ?? 0).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
var options = new ImageProcessingOptions
|
var options = new ImageProcessingOptions
|
||||||
{
|
{
|
||||||
CropWhiteSpace = cropwhitespace,
|
CropWhiteSpace = cropwhitespace,
|
||||||
|
|
|
@ -40,15 +40,6 @@ namespace MediaBrowser.Controller.Drawing
|
||||||
/// <returns>ImageDimensions</returns>
|
/// <returns>ImageDimensions</returns>
|
||||||
ImageDimensions GetImageDimensions(BaseItem item, ItemImageInfo info);
|
ImageDimensions GetImageDimensions(BaseItem item, ItemImageInfo info);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the dimensions of the image.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="item">The base item.</param>
|
|
||||||
/// <param name="info">The information.</param>
|
|
||||||
/// <param name="updateItem">Whether or not the item info should be updated.</param>
|
|
||||||
/// <returns>ImageDimensions</returns>
|
|
||||||
ImageDimensions GetImageDimensions(BaseItem item, ItemImageInfo info, bool updateItem);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the image cache tag.
|
/// Gets the image cache tag.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in New Issue