From 8ec8b463942d132a71fd319535c63d7205075e54 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 30 Oct 2017 00:51:43 -0400 Subject: allow separate configuration of date format --- MediaBrowser.ServerApplication/ServerNotifyIcon.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'MediaBrowser.ServerApplication') diff --git a/MediaBrowser.ServerApplication/ServerNotifyIcon.cs b/MediaBrowser.ServerApplication/ServerNotifyIcon.cs index cc8656f23..a8c36e4e8 100644 --- a/MediaBrowser.ServerApplication/ServerNotifyIcon.cs +++ b/MediaBrowser.ServerApplication/ServerNotifyIcon.cs @@ -144,12 +144,12 @@ namespace MediaBrowser.ServerApplication { _uiCulture = _configurationManager.Configuration.UICulture; - cmdExit.Text = _localization.GetLocalizedString("LabelExit"); - cmdCommunity.Text = _localization.GetLocalizedString("LabelVisitCommunity"); - cmdPremiere.Text = _localization.GetLocalizedString("Emby Premiere"); - cmdBrowse.Text = _localization.GetLocalizedString("LabelBrowseLibrary"); - cmdConfigure.Text = _localization.GetLocalizedString("LabelConfigureServer"); - cmdRestart.Text = _localization.GetLocalizedString("LabelRestartServer"); + cmdExit.Text = "Exit"; + cmdCommunity.Text = "Visit Emby Community"; + cmdPremiere.Text = "Emby Premiere"; + cmdBrowse.Text = "Browse Library"; + cmdConfigure.Text = "Configure Emby Server"; + cmdRestart.Text = "Restart Emby Server"; } private string _uiCulture; -- cgit v1.2.3 From 1358ea2ca4b4b87640eb0c08bc3f6f1abba0238a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 30 Oct 2017 00:55:11 -0400 Subject: update SimpleInjector --- Emby.Server.Implementations/Emby.Server.Implementations.csproj | 4 ++-- Emby.Server.Implementations/packages.config | 2 +- MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj | 4 ++-- MediaBrowser.Server.Mono/packages.config | 2 +- MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj | 4 ++-- MediaBrowser.ServerApplication/packages.config | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) (limited to 'MediaBrowser.ServerApplication') diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj index 1ecbabf2f..8ff1b63c0 100644 --- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj +++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj @@ -651,8 +651,8 @@ ..\packages\SharpCompress.0.18.2\lib\net45\SharpCompress.dll - - ..\packages\SimpleInjector.4.0.8\lib\net45\SimpleInjector.dll + + ..\packages\SimpleInjector.4.0.12\lib\net45\SimpleInjector.dll ..\packages\SQLitePCL.pretty.1.1.0\lib\portable-net45+netcore45+wpa81+wp8\SQLitePCL.pretty.dll diff --git a/Emby.Server.Implementations/packages.config b/Emby.Server.Implementations/packages.config index d27722fef..6e68810d8 100644 --- a/Emby.Server.Implementations/packages.config +++ b/Emby.Server.Implementations/packages.config @@ -3,7 +3,7 @@ - + \ No newline at end of file diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj index 365977530..dfd071447 100644 --- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj +++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj @@ -58,8 +58,8 @@ ..\packages\SharpCompress.0.18.2\lib\net45\SharpCompress.dll - - ..\packages\SimpleInjector.4.0.8\lib\net45\SimpleInjector.dll + + ..\packages\SimpleInjector.4.0.12\lib\net45\SimpleInjector.dll ..\packages\SkiaSharp.1.58.1\lib\net45\SkiaSharp.dll diff --git a/MediaBrowser.Server.Mono/packages.config b/MediaBrowser.Server.Mono/packages.config index dfa3dc75d..e7aec97b6 100644 --- a/MediaBrowser.Server.Mono/packages.config +++ b/MediaBrowser.Server.Mono/packages.config @@ -3,7 +3,7 @@ - + diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index 9e4f52489..f479db46f 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -80,8 +80,8 @@ ..\packages\SharpCompress.0.18.2\lib\net45\SharpCompress.dll - - ..\packages\SimpleInjector.4.0.8\lib\net45\SimpleInjector.dll + + ..\packages\SimpleInjector.4.0.12\lib\net45\SimpleInjector.dll ..\packages\SkiaSharp.1.58.1\lib\net45\SkiaSharp.dll diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config index c7b98700e..e40a3ab15 100644 --- a/MediaBrowser.ServerApplication/packages.config +++ b/MediaBrowser.ServerApplication/packages.config @@ -2,7 +2,7 @@ - + -- cgit v1.2.3 From ccda4bd62928466badcd0787eaedc79dc318a80b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 30 Oct 2017 01:26:19 -0400 Subject: update to skia 1.59.2 --- Emby.Drawing.Skia/Emby.Drawing.Skia.csproj | 4 ++-- Emby.Drawing.Skia/packages.config | 2 +- MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj | 4 ++-- MediaBrowser.Server.Mono/packages.config | 2 +- .../MediaBrowser.ServerApplication.csproj | 8 ++++---- MediaBrowser.ServerApplication/packages.config | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) (limited to 'MediaBrowser.ServerApplication') diff --git a/Emby.Drawing.Skia/Emby.Drawing.Skia.csproj b/Emby.Drawing.Skia/Emby.Drawing.Skia.csproj index f2b32d52c..6024c3d2c 100644 --- a/Emby.Drawing.Skia/Emby.Drawing.Skia.csproj +++ b/Emby.Drawing.Skia/Emby.Drawing.Skia.csproj @@ -63,8 +63,8 @@ - - ..\packages\SkiaSharp.1.58.1\lib\portable-net45+win8+wpa81+wp8\SkiaSharp.dll + + ..\packages\SkiaSharp.1.59.2\lib\portable-net45+win8+wpa81+wp8\SkiaSharp.dll diff --git a/Emby.Drawing.Skia/packages.config b/Emby.Drawing.Skia/packages.config index 2b9b0aee4..1aa3653cd 100644 --- a/Emby.Drawing.Skia/packages.config +++ b/Emby.Drawing.Skia/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj index dfd071447..a9e5d3ca5 100644 --- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj +++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj @@ -61,8 +61,8 @@ ..\packages\SimpleInjector.4.0.12\lib\net45\SimpleInjector.dll - - ..\packages\SkiaSharp.1.58.1\lib\net45\SkiaSharp.dll + + ..\packages\SkiaSharp.1.59.2\lib\net45\SkiaSharp.dll ..\packages\SQLitePCLRaw.core.1.1.8\lib\net45\SQLitePCLRaw.core.dll diff --git a/MediaBrowser.Server.Mono/packages.config b/MediaBrowser.Server.Mono/packages.config index e7aec97b6..4f2324c21 100644 --- a/MediaBrowser.Server.Mono/packages.config +++ b/MediaBrowser.Server.Mono/packages.config @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index f479db46f..33f858b00 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -83,8 +83,8 @@ ..\packages\SimpleInjector.4.0.12\lib\net45\SimpleInjector.dll - - ..\packages\SkiaSharp.1.58.1\lib\net45\SkiaSharp.dll + + ..\packages\SkiaSharp.1.59.2\lib\net45\SkiaSharp.dll ..\packages\SQLitePCLRaw.core.1.1.8\lib\net45\SQLitePCLRaw.core.dll @@ -161,11 +161,11 @@ - + x64\libSkiaSharp.dll PreserveNewest - + x86\libSkiaSharp.dll PreserveNewest diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config index e40a3ab15..805c7af62 100644 --- a/MediaBrowser.ServerApplication/packages.config +++ b/MediaBrowser.ServerApplication/packages.config @@ -3,7 +3,7 @@ - + \ No newline at end of file -- cgit v1.2.3 From 5fa007d04eff4a280a3f549de869339cccdb0d52 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 1 Nov 2017 15:45:10 -0400 Subject: add error handling to work around skia crashes --- Emby.Drawing.Skia/SkiaEncoder.cs | 62 ++++++++++++++++++---- Emby.Drawing.Skia/StripCollageBuilder.cs | 4 +- MediaBrowser.Server.Mono/ImageEncoderHelper.cs | 6 ++- MediaBrowser.Server.Mono/Program.cs | 2 +- .../ImageEncoderHelper.cs | 6 ++- MediaBrowser.ServerApplication/MainStartup.cs | 17 +++++- 6 files changed, 79 insertions(+), 18 deletions(-) (limited to 'MediaBrowser.ServerApplication') diff --git a/Emby.Drawing.Skia/SkiaEncoder.cs b/Emby.Drawing.Skia/SkiaEncoder.cs index 7469d167e..a89e1f2db 100644 --- a/Emby.Drawing.Skia/SkiaEncoder.cs +++ b/Emby.Drawing.Skia/SkiaEncoder.cs @@ -10,22 +10,27 @@ using System.IO; using System.Linq; using System.Reflection; using System.Threading.Tasks; +using MediaBrowser.Controller.Extensions; +using System.Globalization; +using MediaBrowser.Model.Globalization; namespace Emby.Drawing.Skia { public class SkiaEncoder : IImageEncoder { private readonly ILogger _logger; - private readonly IApplicationPaths _appPaths; + private static IApplicationPaths _appPaths; private readonly Func _httpClientFactory; private readonly IFileSystem _fileSystem; + private static ILocalizationManager _localizationManager; - public SkiaEncoder(ILogger logger, IApplicationPaths appPaths, Func httpClientFactory, IFileSystem fileSystem) + public SkiaEncoder(ILogger logger, IApplicationPaths appPaths, Func httpClientFactory, IFileSystem fileSystem, ILocalizationManager localizationManager) { _logger = logger; _appPaths = appPaths; _httpClientFactory = httpClientFactory; _fileSystem = fileSystem; + _localizationManager = localizationManager; LogVersion(); } @@ -190,14 +195,53 @@ namespace Emby.Drawing.Skia } } + private static bool HasDiacritics(string text) + { + return !String.Equals(text, text.RemoveDiacritics(), StringComparison.Ordinal); + } + + private static bool RequiresSpecialCharacterHack(string path) + { + if (_localizationManager.HasUnicodeCategory(path, UnicodeCategory.OtherLetter)) + { + return true; + } + + if (HasDiacritics(path)) + { + return true; + } + + return false; + } + + private static string NormalizePath(string path, IFileSystem fileSystem) + { + if (!RequiresSpecialCharacterHack(path)) + { + return path; + } + + var tempPath = Path.Combine(_appPaths.TempDirectory, Guid.NewGuid() + Path.GetExtension(path) ?? string.Empty); + + fileSystem.CopyFile(path, tempPath, true); + + return tempPath; + } + private static string[] TransparentImageTypes = new string[] { ".png", ".gif", ".webp" }; - internal static SKBitmap Decode(string path, bool forceCleanBitmap, out SKCodecOrigin origin) + internal static SKBitmap Decode(string path, bool forceCleanBitmap, IFileSystem fileSystem, out SKCodecOrigin origin) { + if (!fileSystem.FileExists(path)) + { + throw new FileNotFoundException("File not found", path); + } + var requiresTransparencyHack = TransparentImageTypes.Contains(Path.GetExtension(path) ?? string.Empty); if (requiresTransparencyHack || forceCleanBitmap) { - using (var stream = new SKFileStream(path)) + using (var stream = new SKFileStream(NormalizePath(path, fileSystem))) { using (var codec = SKCodec.Create(stream)) { @@ -227,11 +271,11 @@ namespace Emby.Drawing.Skia } } - var resultBitmap = SKBitmap.Decode(path); + var resultBitmap = SKBitmap.Decode(NormalizePath(path, fileSystem)); if (resultBitmap == null) { - return Decode(path, true, out origin); + return Decode(path, true, fileSystem, out origin); } // If we have to resize these they often end up distorted @@ -239,7 +283,7 @@ namespace Emby.Drawing.Skia { using (resultBitmap) { - return Decode(path, true, out origin); + return Decode(path, true, fileSystem, out origin); } } @@ -251,13 +295,13 @@ namespace Emby.Drawing.Skia { if (cropWhitespace) { - using (var bitmap = Decode(path, forceAnalyzeBitmap, out origin)) + using (var bitmap = Decode(path, forceAnalyzeBitmap, _fileSystem, out origin)) { return CropWhiteSpace(bitmap); } } - return Decode(path, forceAnalyzeBitmap, out origin); + return Decode(path, forceAnalyzeBitmap, _fileSystem, out origin); } private SKBitmap GetBitmap(string path, bool cropWhitespace, bool autoOrient) diff --git a/Emby.Drawing.Skia/StripCollageBuilder.cs b/Emby.Drawing.Skia/StripCollageBuilder.cs index 624245ee7..d562bb4be 100644 --- a/Emby.Drawing.Skia/StripCollageBuilder.cs +++ b/Emby.Drawing.Skia/StripCollageBuilder.cs @@ -83,7 +83,7 @@ namespace Emby.Drawing.Skia for (int i = 0; i < 4; i++) { SKCodecOrigin origin; - using (var currentBitmap = SkiaEncoder.Decode(paths[imageIndex], false, out origin)) + using (var currentBitmap = SkiaEncoder.Decode(paths[imageIndex], false, _fileSystem, out origin)) { // resize to the same aspect as the original int iWidth = (int)Math.Abs(iHeight * currentBitmap.Width / currentBitmap.Height); @@ -165,7 +165,7 @@ namespace Emby.Drawing.Skia for (var y = 0; y < 2; y++) { SKCodecOrigin origin; - using (var currentBitmap = SkiaEncoder.Decode(paths[imageIndex], false, out origin)) + using (var currentBitmap = SkiaEncoder.Decode(paths[imageIndex], false, _fileSystem, out origin)) { using (var resizedBitmap = new SKBitmap(cellWidth, cellHeight, currentBitmap.ColorType, currentBitmap.AlphaType)) { diff --git a/MediaBrowser.Server.Mono/ImageEncoderHelper.cs b/MediaBrowser.Server.Mono/ImageEncoderHelper.cs index 5112c64ed..4f8451c0d 100644 --- a/MediaBrowser.Server.Mono/ImageEncoderHelper.cs +++ b/MediaBrowser.Server.Mono/ImageEncoderHelper.cs @@ -9,6 +9,7 @@ using MediaBrowser.Model.IO; using MediaBrowser.Model.Logging; using Emby.Drawing.Skia; using MediaBrowser.Model.System; +using MediaBrowser.Model.Globalization; namespace MediaBrowser.Server.Startup.Common { @@ -20,13 +21,14 @@ namespace MediaBrowser.Server.Startup.Common StartupOptions startupOptions, Func httpClient, IApplicationPaths appPaths, - IEnvironmentInfo environment) + IEnvironmentInfo environment, + ILocalizationManager localizationManager) { if (!startupOptions.ContainsOption("-enablegdi")) { try { - return new SkiaEncoder(logManager.GetLogger("Skia"), appPaths, httpClient, fileSystem); + return new SkiaEncoder(logManager.GetLogger("Skia"), appPaths, httpClient, fileSystem, localizationManager); } catch (Exception ex) { diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs index 3267a77b9..7a3a968ad 100644 --- a/MediaBrowser.Server.Mono/Program.cs +++ b/MediaBrowser.Server.Mono/Program.cs @@ -127,7 +127,7 @@ namespace MediaBrowser.Server.Mono Task.WaitAll(task); - appHost.ImageProcessor.ImageEncoder = ImageEncoderHelper.GetImageEncoder(_logger, logManager, fileSystem, options, () => appHost.HttpClient, appPaths, environmentInfo); + appHost.ImageProcessor.ImageEncoder = ImageEncoderHelper.GetImageEncoder(_logger, logManager, fileSystem, options, () => appHost.HttpClient, appPaths, environmentInfo, appHost.LocalizationManager); Console.WriteLine("Running startup tasks"); diff --git a/MediaBrowser.ServerApplication/ImageEncoderHelper.cs b/MediaBrowser.ServerApplication/ImageEncoderHelper.cs index c86e85785..7c95a25de 100644 --- a/MediaBrowser.ServerApplication/ImageEncoderHelper.cs +++ b/MediaBrowser.ServerApplication/ImageEncoderHelper.cs @@ -7,6 +7,7 @@ using MediaBrowser.Common.Net; using MediaBrowser.Controller.Drawing; using MediaBrowser.Model.IO; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Globalization; namespace MediaBrowser.Server.Startup.Common { @@ -17,11 +18,12 @@ namespace MediaBrowser.Server.Startup.Common IFileSystem fileSystem, StartupOptions startupOptions, Func httpClient, - IApplicationPaths appPaths) + IApplicationPaths appPaths, + ILocalizationManager localizationManager) { try { - return new SkiaEncoder(logManager.GetLogger("Skia"), appPaths, httpClient, fileSystem); + return new SkiaEncoder(logManager.GetLogger("Skia"), appPaths, httpClient, fileSystem, localizationManager); } catch { diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index 70b03aa44..91a949921 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -304,6 +304,19 @@ namespace MediaBrowser.ServerApplication } } + private static string UpdatePackageFileName + { + get + { + if (Environment.Is64BitOperatingSystem) + { + return "embyserver-win-x64-{version}.zip"; + } + + return "embyserver-win-x86-{version}.zip"; + } + } + /// /// Runs the application. /// @@ -324,7 +337,7 @@ namespace MediaBrowser.ServerApplication options, fileSystem, new PowerManagement(), - "emby.windows.zip", + UpdatePackageFileName, environmentInfo, new NullImageEncoder(), new SystemEvents(logManager.GetLogger("SystemEvents")), @@ -355,7 +368,7 @@ namespace MediaBrowser.ServerApplication } // set image encoder here - appHost.ImageProcessor.ImageEncoder = ImageEncoderHelper.GetImageEncoder(_logger, logManager, fileSystem, options, () => appHost.HttpClient, appPaths); + appHost.ImageProcessor.ImageEncoder = ImageEncoderHelper.GetImageEncoder(_logger, logManager, fileSystem, options, () => appHost.HttpClient, appPaths, appHost.LocalizationManager); task = task.ContinueWith(new Action(a => appHost.RunStartupTasks()), TaskContinuationOptions.OnlyOnRanToCompletion | TaskContinuationOptions.AttachedToParent); -- cgit v1.2.3