fix merge conflicts

pull/702/head
Luke Pulverenti 10 years ago
parent 6d3dcd8266
commit e8010955dc

@ -1,4 +1,5 @@
using MediaBrowser.Common.Extensions; using Emby.Drawing.Common;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO; using MediaBrowser.Common.IO;
using MediaBrowser.Controller; using MediaBrowser.Controller;
using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Drawing;
@ -16,7 +17,6 @@ using System.IO;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Emby.Drawing.Common;
namespace Emby.Drawing namespace Emby.Drawing
{ {
@ -215,12 +215,12 @@ namespace Emby.Drawing
{ {
CheckDisposed(); CheckDisposed();
if (!_fileSystem.FileExists(cacheFilePath)) if (!File.Exists(cacheFilePath))
{ {
var newWidth = Convert.ToInt32(newSize.Width); var newWidth = Convert.ToInt32(newSize.Width);
var newHeight = Convert.ToInt32(newSize.Height); var newHeight = Convert.ToInt32(newSize.Height);
_fileSystem.CreateDirectory(Path.GetDirectoryName(cacheFilePath)); Directory.CreateDirectory(Path.GetDirectoryName(cacheFilePath));
await _imageProcessingSemaphore.WaitAsync().ConfigureAwait(false); await _imageProcessingSemaphore.WaitAsync().ConfigureAwait(false);
@ -270,7 +270,7 @@ namespace Emby.Drawing
await semaphore.WaitAsync().ConfigureAwait(false); await semaphore.WaitAsync().ConfigureAwait(false);
// Check again in case of contention // Check again in case of contention
if (_fileSystem.FileExists(croppedImagePath)) if (File.Exists(croppedImagePath))
{ {
semaphore.Release(); semaphore.Release();
return GetResult(croppedImagePath); return GetResult(croppedImagePath);
@ -280,7 +280,7 @@ namespace Emby.Drawing
try try
{ {
_fileSystem.CreateDirectory(Path.GetDirectoryName(croppedImagePath)); Directory.CreateDirectory(Path.GetDirectoryName(croppedImagePath));
await _imageProcessingSemaphore.WaitAsync().ConfigureAwait(false); await _imageProcessingSemaphore.WaitAsync().ConfigureAwait(false);
imageProcessingLockTaken = true; imageProcessingLockTaken = true;
@ -366,7 +366,7 @@ namespace Emby.Drawing
/// <returns>ImageSize.</returns> /// <returns>ImageSize.</returns>
public ImageSize GetImageSize(string path) public ImageSize GetImageSize(string path)
{ {
return GetImageSize(path, _fileSystem.GetLastWriteTimeUtc(path), false); return GetImageSize(path, File.GetLastWriteTimeUtc(path), false);
} }
public ImageSize GetImageSize(ItemImageInfo info) public ImageSize GetImageSize(ItemImageInfo info)
@ -399,8 +399,6 @@ namespace Emby.Drawing
{ {
size = GetImageSizeInternal(path, allowSlowMethod); size = GetImageSizeInternal(path, allowSlowMethod);
StartSaveImageSizeTimer();
_cachedImagedSizes.AddOrUpdate(cacheHash, size, (keyName, oldValue) => size); _cachedImagedSizes.AddOrUpdate(cacheHash, size, (keyName, oldValue) => size);
} }
@ -415,26 +413,28 @@ namespace Emby.Drawing
/// <returns>ImageSize.</returns> /// <returns>ImageSize.</returns>
private ImageSize GetImageSizeInternal(string path, bool allowSlowMethod) private ImageSize GetImageSizeInternal(string path, bool allowSlowMethod)
{ {
try ImageSize size;
{
using (var file = TagLib.File.Create(path))
{
var image = file as TagLib.Image.File;
var properties = image.Properties;
return new ImageSize try
{ {
Height = properties.PhotoHeight, size = ImageHeader.GetDimensions(path, _logger, _fileSystem);
Width = properties.PhotoWidth
};
}
} }
catch catch
{ {
if (!allowSlowMethod)
{
throw;
} }
//_logger.Info("Failed to read image header for {0}. Doing it the slow way.", path);
return ImageHeader.GetDimensions(path, _logger, _fileSystem); CheckDisposed();
size = _imageEncoder.GetImageSize(path);
}
StartSaveImageSizeTimer();
return size;
} }
private readonly Timer _saveImageSizeTimer; private readonly Timer _saveImageSizeTimer;
@ -452,7 +452,7 @@ namespace Emby.Drawing
try try
{ {
var path = ImageSizeFile; var path = ImageSizeFile;
_fileSystem.CreateDirectory(Path.GetDirectoryName(path)); Directory.CreateDirectory(Path.GetDirectoryName(path));
_jsonSerializer.SerializeToFile(_cachedImagedSizes, path); _jsonSerializer.SerializeToFile(_cachedImagedSizes, path);
} }
catch (Exception ex) catch (Exception ex)
@ -624,7 +624,7 @@ namespace Emby.Drawing
await semaphore.WaitAsync().ConfigureAwait(false); await semaphore.WaitAsync().ConfigureAwait(false);
// Check again in case of contention // Check again in case of contention
if (_fileSystem.FileExists(enhancedImagePath)) if (File.Exists(enhancedImagePath))
{ {
semaphore.Release(); semaphore.Release();
return enhancedImagePath; return enhancedImagePath;
@ -634,7 +634,7 @@ namespace Emby.Drawing
try try
{ {
_fileSystem.CreateDirectory(Path.GetDirectoryName(enhancedImagePath)); Directory.CreateDirectory(Path.GetDirectoryName(enhancedImagePath));
await _imageProcessingSemaphore.WaitAsync().ConfigureAwait(false); await _imageProcessingSemaphore.WaitAsync().ConfigureAwait(false);

@ -23,7 +23,8 @@ namespace MediaBrowser.Api.Playback.Hls
/// </summary> /// </summary>
public abstract class BaseHlsService : BaseStreamingService public abstract class BaseHlsService : BaseStreamingService
{ {
protected BaseHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient, IJsonSerializer jsonSerializer) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, dlnaManager, subtitleEncoder, deviceManager, mediaSourceManager, zipClient, jsonSerializer) protected BaseHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient, IJsonSerializer jsonSerializer)
: base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, dlnaManager, subtitleEncoder, deviceManager, mediaSourceManager, zipClient, jsonSerializer)
{ {
} }
@ -90,12 +91,12 @@ namespace MediaBrowser.Api.Playback.Hls
TranscodingJob job = null; TranscodingJob job = null;
var playlist = state.OutputFilePath; var playlist = state.OutputFilePath;
if (!FileSystem.FileExists(playlist)) if (!File.Exists(playlist))
{ {
await ApiEntryPoint.Instance.TranscodingStartLock.WaitAsync(cancellationTokenSource.Token).ConfigureAwait(false); await ApiEntryPoint.Instance.TranscodingStartLock.WaitAsync(cancellationTokenSource.Token).ConfigureAwait(false);
try try
{ {
if (!FileSystem.FileExists(playlist)) if (!File.Exists(playlist))
{ {
// If the playlist doesn't already exist, startup ffmpeg // If the playlist doesn't already exist, startup ffmpeg
try try

@ -165,7 +165,7 @@ namespace MediaBrowser.Api.Playback.Hls
TranscodingJob job = null; TranscodingJob job = null;
if (FileSystem.FileExists(segmentPath)) if (File.Exists(segmentPath))
{ {
job = ApiEntryPoint.Instance.OnTranscodeBeginRequest(playlistPath, TranscodingJobType); job = ApiEntryPoint.Instance.OnTranscodeBeginRequest(playlistPath, TranscodingJobType);
return await GetSegmentResult(state, playlistPath, segmentPath, requestedIndex, job, cancellationToken).ConfigureAwait(false); return await GetSegmentResult(state, playlistPath, segmentPath, requestedIndex, job, cancellationToken).ConfigureAwait(false);
@ -174,7 +174,7 @@ namespace MediaBrowser.Api.Playback.Hls
await ApiEntryPoint.Instance.TranscodingStartLock.WaitAsync(cancellationTokenSource.Token).ConfigureAwait(false); await ApiEntryPoint.Instance.TranscodingStartLock.WaitAsync(cancellationTokenSource.Token).ConfigureAwait(false);
try try
{ {
if (FileSystem.FileExists(segmentPath)) if (File.Exists(segmentPath))
{ {
job = ApiEntryPoint.Instance.OnTranscodeBeginRequest(playlistPath, TranscodingJobType); job = ApiEntryPoint.Instance.OnTranscodeBeginRequest(playlistPath, TranscodingJobType);
return await GetSegmentResult(state, playlistPath, segmentPath, requestedIndex, job, cancellationToken).ConfigureAwait(false); return await GetSegmentResult(state, playlistPath, segmentPath, requestedIndex, job, cancellationToken).ConfigureAwait(false);
@ -386,7 +386,8 @@ namespace MediaBrowser.Api.Playback.Hls
try try
{ {
return fileSystem.GetFiles(folder) return new DirectoryInfo(folder)
.EnumerateFiles("*", SearchOption.TopDirectoryOnly)
.Where(i => string.Equals(i.Extension, segmentExtension, StringComparison.OrdinalIgnoreCase) && Path.GetFileNameWithoutExtension(i.Name).StartsWith(filePrefix, StringComparison.OrdinalIgnoreCase)) .Where(i => string.Equals(i.Extension, segmentExtension, StringComparison.OrdinalIgnoreCase) && Path.GetFileNameWithoutExtension(i.Name).StartsWith(filePrefix, StringComparison.OrdinalIgnoreCase))
.OrderByDescending(fileSystem.GetLastWriteTimeUtc) .OrderByDescending(fileSystem.GetLastWriteTimeUtc)
.FirstOrDefault(); .FirstOrDefault();
@ -431,7 +432,7 @@ namespace MediaBrowser.Api.Playback.Hls
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {
// If all transcoding has completed, just return immediately // If all transcoding has completed, just return immediately
if (transcodingJob != null && transcodingJob.HasExited && FileSystem.FileExists(segmentPath)) if (transcodingJob != null && transcodingJob.HasExited && File.Exists(segmentPath))
{ {
return GetSegmentResult(state, segmentPath, segmentIndex, transcodingJob); return GetSegmentResult(state, segmentPath, segmentIndex, transcodingJob);
} }
@ -451,7 +452,7 @@ namespace MediaBrowser.Api.Playback.Hls
// If it appears in the playlist, it's done // If it appears in the playlist, it's done
if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1) if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1)
{ {
if (FileSystem.FileExists(segmentPath)) if (File.Exists(segmentPath))
{ {
return GetSegmentResult(state, segmentPath, segmentIndex, transcodingJob); return GetSegmentResult(state, segmentPath, segmentIndex, transcodingJob);
} }

@ -44,6 +44,12 @@ namespace MediaBrowser.Model.Configuration
/// <value><c>true</c> if [use HTTPS]; otherwise, <c>false</c>.</value> /// <value><c>true</c> if [use HTTPS]; otherwise, <c>false</c>.</value>
public bool EnableHttps { get; set; } public bool EnableHttps { get; set; }
/// <summary>
/// Gets or sets a value indicating whether [enable user specific user views].
/// </summary>
/// <value><c>true</c> if [enable user specific user views]; otherwise, <c>false</c>.</value>
public bool EnableUserSpecificUserViews { get; set; }
/// <summary> /// <summary>
/// Gets or sets the value pointing to the file system where the ssl certiifcate is located.. /// Gets or sets the value pointing to the file system where the ssl certiifcate is located..
/// </summary> /// </summary>
@ -98,12 +104,6 @@ namespace MediaBrowser.Model.Configuration
/// <value><c>true</c> if [disable startup scan]; otherwise, <c>false</c>.</value> /// <value><c>true</c> if [disable startup scan]; otherwise, <c>false</c>.</value>
public bool DisableStartupScan { get; set; } public bool DisableStartupScan { get; set; }
/// <summary>
/// Gets or sets a value indicating whether [enable user views].
/// </summary>
/// <value><c>true</c> if [enable user views]; otherwise, <c>false</c>.</value>
public bool EnableUserViews { get; set; }
/// <summary> /// <summary>
/// Gets or sets a value indicating whether [enable library metadata sub folder]. /// Gets or sets a value indicating whether [enable library metadata sub folder].
/// </summary> /// </summary>
@ -274,7 +274,11 @@ namespace MediaBrowser.Model.Configuration
InsecureApps9 = new[] InsecureApps9 = new[]
{ {
"Chromecast",
"iOS",
"Unknown app", "Unknown app",
"iPad",
"iPhone",
"Windows Phone" "Windows Phone"
}; };

@ -157,7 +157,7 @@ namespace MediaBrowser.Server.Implementations.Devices
_libraryMonitor.ReportFileSystemChangeBeginning(path); _libraryMonitor.ReportFileSystemChangeBeginning(path);
_fileSystem.CreateDirectory(Path.GetDirectoryName(path)); Directory.CreateDirectory(Path.GetDirectoryName(path));
try try
{ {

@ -15,7 +15,6 @@ using System.IO;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using MediaBrowser.Common.IO;
namespace MediaBrowser.Server.Implementations.Library namespace MediaBrowser.Server.Implementations.Library
{ {
@ -25,19 +24,17 @@ namespace MediaBrowser.Server.Implementations.Library
private readonly IUserManager _userManager; private readonly IUserManager _userManager;
private readonly ILibraryManager _libraryManager; private readonly ILibraryManager _libraryManager;
private readonly IJsonSerializer _jsonSerializer; private readonly IJsonSerializer _jsonSerializer;
private readonly IFileSystem _fileSystem;
private IMediaSourceProvider[] _providers; private IMediaSourceProvider[] _providers;
private readonly ILogger _logger; private readonly ILogger _logger;
public MediaSourceManager(IItemRepository itemRepo, IUserManager userManager, ILibraryManager libraryManager, ILogger logger, IJsonSerializer jsonSerializer, IFileSystem fileSystem) public MediaSourceManager(IItemRepository itemRepo, IUserManager userManager, ILibraryManager libraryManager, ILogger logger, IJsonSerializer jsonSerializer)
{ {
_itemRepo = itemRepo; _itemRepo = itemRepo;
_userManager = userManager; _userManager = userManager;
_libraryManager = libraryManager; _libraryManager = libraryManager;
_logger = logger; _logger = logger;
_jsonSerializer = jsonSerializer; _jsonSerializer = jsonSerializer;
_fileSystem = fileSystem;
} }
public void AddParts(IEnumerable<IMediaSourceProvider> providers) public void AddParts(IEnumerable<IMediaSourceProvider> providers)
@ -173,7 +170,7 @@ namespace MediaBrowser.Server.Implementations.Library
if (source.Protocol == MediaProtocol.File) if (source.Protocol == MediaProtocol.File)
{ {
// TODO: Path substitution // TODO: Path substitution
if (!_fileSystem.FileExists(source.Path)) if (!File.Exists(source.Path))
{ {
source.SupportsDirectStream = false; source.SupportsDirectStream = false;
} }

Loading…
Cancel
Save