mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-04 03:27:21 -05:00 
			
		
		
		
	update portable projects
This commit is contained in:
		
							parent
							
								
									13ec531b14
								
							
						
					
					
						commit
						5655787c1a
					
				@ -152,8 +152,6 @@ namespace Emby.Common.Implementations
 | 
			
		||||
 | 
			
		||||
        protected IIsoManager IsoManager { get; private set; }
 | 
			
		||||
 | 
			
		||||
        protected ISystemEvents SystemEvents { get; private set; }
 | 
			
		||||
 | 
			
		||||
        protected IProcessFactory ProcessFactory { get; private set; }
 | 
			
		||||
        protected ITimerFactory TimerFactory { get; private set; }
 | 
			
		||||
        protected ISocketFactory SocketFactory { get; private set; }
 | 
			
		||||
@ -193,22 +191,29 @@ namespace Emby.Common.Implementations
 | 
			
		||||
            get { return EnvironmentInfo.OperatingSystemName; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public IMemoryStreamFactory MemoryStreamProvider { get; set; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// The container
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        protected readonly SimpleInjector.Container Container = new SimpleInjector.Container();
 | 
			
		||||
 | 
			
		||||
        protected ISystemEvents SystemEvents { get; private set; }
 | 
			
		||||
        protected IMemoryStreamFactory MemoryStreamFactory { get; private set; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Initializes a new instance of the <see cref="BaseApplicationHost{TApplicationPathsType}"/> class.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        protected BaseApplicationHost(TApplicationPathsType applicationPaths,
 | 
			
		||||
            ILogManager logManager,
 | 
			
		||||
            IFileSystem fileSystem,
 | 
			
		||||
            IEnvironmentInfo environmentInfo)
 | 
			
		||||
            IEnvironmentInfo environmentInfo,
 | 
			
		||||
            ISystemEvents systemEvents,
 | 
			
		||||
            IMemoryStreamFactory memoryStreamFactory,
 | 
			
		||||
            INetworkManager networkManager)
 | 
			
		||||
        {
 | 
			
		||||
            NetworkManager = networkManager;
 | 
			
		||||
            EnvironmentInfo = environmentInfo;
 | 
			
		||||
            SystemEvents = systemEvents;
 | 
			
		||||
            MemoryStreamFactory = memoryStreamFactory;
 | 
			
		||||
 | 
			
		||||
            // hack alert, until common can target .net core
 | 
			
		||||
            BaseExtensions.CryptographyProvider = CryptographyProvider;
 | 
			
		||||
@ -236,9 +241,6 @@ namespace Emby.Common.Implementations
 | 
			
		||||
 | 
			
		||||
            JsonSerializer = CreateJsonSerializer();
 | 
			
		||||
 | 
			
		||||
            MemoryStreamProvider = CreateMemoryStreamProvider();
 | 
			
		||||
            SystemEvents = CreateSystemEvents();
 | 
			
		||||
 | 
			
		||||
            OnLoggerLoaded(true);
 | 
			
		||||
            LogManager.LoggerLoaded += (s, e) => OnLoggerLoaded(false);
 | 
			
		||||
 | 
			
		||||
@ -270,9 +272,6 @@ namespace Emby.Common.Implementations
 | 
			
		||||
            progress.Report(100);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected abstract IMemoryStreamFactory CreateMemoryStreamProvider();
 | 
			
		||||
        protected abstract ISystemEvents CreateSystemEvents();
 | 
			
		||||
 | 
			
		||||
        protected virtual void OnLoggerLoaded(bool isFirstLoad)
 | 
			
		||||
        {
 | 
			
		||||
            Logger.Info("Application version: {0}", ApplicationVersion);
 | 
			
		||||
@ -524,7 +523,7 @@ return null;
 | 
			
		||||
 | 
			
		||||
            RegisterSingleInstance(JsonSerializer);
 | 
			
		||||
            RegisterSingleInstance(XmlSerializer);
 | 
			
		||||
            RegisterSingleInstance(MemoryStreamProvider);
 | 
			
		||||
            RegisterSingleInstance(MemoryStreamFactory);
 | 
			
		||||
            RegisterSingleInstance(SystemEvents);
 | 
			
		||||
 | 
			
		||||
            RegisterSingleInstance(LogManager);
 | 
			
		||||
@ -535,10 +534,9 @@ return null;
 | 
			
		||||
 | 
			
		||||
            RegisterSingleInstance(FileSystemManager);
 | 
			
		||||
 | 
			
		||||
            HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, LogManager.GetLogger("HttpClient"), FileSystemManager, MemoryStreamProvider);
 | 
			
		||||
            HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, LogManager.GetLogger("HttpClient"), FileSystemManager, MemoryStreamFactory);
 | 
			
		||||
            RegisterSingleInstance(HttpClient);
 | 
			
		||||
 | 
			
		||||
            NetworkManager = CreateNetworkManager(LogManager.GetLogger("NetworkManager"));
 | 
			
		||||
            RegisterSingleInstance(NetworkManager);
 | 
			
		||||
 | 
			
		||||
            IsoManager = new IsoManager();
 | 
			
		||||
@ -591,8 +589,6 @@ return null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected abstract INetworkManager CreateNetworkManager(ILogger logger);
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Creates an instance of type and resolves all constructor dependancies
 | 
			
		||||
        /// </summary>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										83
									
								
								Emby.Drawing.ImageMagick/Emby.Drawing.ImageMagick.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								Emby.Drawing.ImageMagick/Emby.Drawing.ImageMagick.csproj
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,83 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
 | 
			
		||||
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
 | 
			
		||||
    <ProjectGuid>{6CFEE013-6E7C-432B-AC37-CABF0880C69A}</ProjectGuid>
 | 
			
		||||
    <OutputType>Library</OutputType>
 | 
			
		||||
    <AppDesignerFolder>Properties</AppDesignerFolder>
 | 
			
		||||
    <RootNamespace>Emby.Drawing.ImageMagick</RootNamespace>
 | 
			
		||||
    <AssemblyName>Emby.Drawing.ImageMagick</AssemblyName>
 | 
			
		||||
    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
 | 
			
		||||
    <FileAlignment>512</FileAlignment>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <Optimize>false</Optimize>
 | 
			
		||||
    <OutputPath>bin\Debug\</OutputPath>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
 | 
			
		||||
    <DebugType>pdbonly</DebugType>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <OutputPath>bin\Release\</OutputPath>
 | 
			
		||||
    <DefineConstants>TRACE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Reference Include="ImageMagickSharp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
 | 
			
		||||
      <HintPath>..\packages\ImageMagickSharp.1.0.0.18\lib\net45\ImageMagickSharp.dll</HintPath>
 | 
			
		||||
      <Private>True</Private>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="System" />
 | 
			
		||||
    <Reference Include="System.Core" />
 | 
			
		||||
    <Reference Include="System.Xml.Linq" />
 | 
			
		||||
    <Reference Include="System.Data.DataSetExtensions" />
 | 
			
		||||
    <Reference Include="Microsoft.CSharp" />
 | 
			
		||||
    <Reference Include="System.Data" />
 | 
			
		||||
    <Reference Include="System.Net.Http" />
 | 
			
		||||
    <Reference Include="System.Xml" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="ImageHelpers.cs" />
 | 
			
		||||
    <Compile Include="ImageMagickEncoder.cs" />
 | 
			
		||||
    <Compile Include="PercentPlayedDrawer.cs" />
 | 
			
		||||
    <Compile Include="PlayedIndicatorDrawer.cs" />
 | 
			
		||||
    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
			
		||||
    <Compile Include="StripCollageBuilder.cs" />
 | 
			
		||||
    <Compile Include="UnplayedCountIndicator.cs" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <EmbeddedResource Include="fonts\robotoregular.ttf" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <None Include="packages.config" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
 | 
			
		||||
      <Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
 | 
			
		||||
      <Name>MediaBrowser.Common</Name>
 | 
			
		||||
    </ProjectReference>
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj">
 | 
			
		||||
      <Project>{17e1f4e6-8abd-4fe5-9ecf-43d4b6087ba2}</Project>
 | 
			
		||||
      <Name>MediaBrowser.Controller</Name>
 | 
			
		||||
    </ProjectReference>
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj">
 | 
			
		||||
      <Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
 | 
			
		||||
      <Name>MediaBrowser.Model</Name>
 | 
			
		||||
    </ProjectReference>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
			
		||||
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
 | 
			
		||||
       Other similar extension points exist, see Microsoft.Common.targets.
 | 
			
		||||
  <Target Name="BeforeBuild">
 | 
			
		||||
  </Target>
 | 
			
		||||
  <Target Name="AfterBuild">
 | 
			
		||||
  </Target>
 | 
			
		||||
  -->
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										43
									
								
								Emby.Drawing.ImageMagick/ImageHelpers.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								Emby.Drawing.ImageMagick/ImageHelpers.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Drawing.ImageMagick
 | 
			
		||||
{
 | 
			
		||||
    internal static class ImageHelpers
 | 
			
		||||
    {
 | 
			
		||||
        internal static List<string> ProjectPaths(List<string> paths, int count)
 | 
			
		||||
        {
 | 
			
		||||
            if (count <= 0)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ArgumentOutOfRangeException("count");
 | 
			
		||||
            }
 | 
			
		||||
            if (paths.Count == 0)
 | 
			
		||||
            {
 | 
			
		||||
                throw new ArgumentOutOfRangeException("paths");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var list = new List<string>();
 | 
			
		||||
 | 
			
		||||
            AddToList(list, paths, count);
 | 
			
		||||
 | 
			
		||||
            return list.Take(count).ToList();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private static void AddToList(List<string> list, List<string> paths, int count)
 | 
			
		||||
        {
 | 
			
		||||
            while (list.Count < count)
 | 
			
		||||
            {
 | 
			
		||||
                foreach (var path in paths)
 | 
			
		||||
                {
 | 
			
		||||
                    list.Add(path);
 | 
			
		||||
 | 
			
		||||
                    if (list.Count >= count)
 | 
			
		||||
                    {
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										36
									
								
								Emby.Drawing.ImageMagick/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								Emby.Drawing.ImageMagick/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Runtime.CompilerServices;
 | 
			
		||||
using System.Runtime.InteropServices;
 | 
			
		||||
 | 
			
		||||
// General Information about an assembly is controlled through the following 
 | 
			
		||||
// set of attributes. Change these attribute values to modify the information
 | 
			
		||||
// associated with an assembly.
 | 
			
		||||
[assembly: AssemblyTitle("Emby.Drawing.ImageMagick")]
 | 
			
		||||
[assembly: AssemblyDescription("")]
 | 
			
		||||
[assembly: AssemblyConfiguration("")]
 | 
			
		||||
[assembly: AssemblyCompany("")]
 | 
			
		||||
[assembly: AssemblyProduct("Emby.Drawing.ImageMagick")]
 | 
			
		||||
[assembly: AssemblyCopyright("Copyright ©  2016")]
 | 
			
		||||
[assembly: AssemblyTrademark("")]
 | 
			
		||||
[assembly: AssemblyCulture("")]
 | 
			
		||||
 | 
			
		||||
// Setting ComVisible to false makes the types in this assembly not visible 
 | 
			
		||||
// to COM components.  If you need to access a type in this assembly from 
 | 
			
		||||
// COM, set the ComVisible attribute to true on that type.
 | 
			
		||||
[assembly: ComVisible(false)]
 | 
			
		||||
 | 
			
		||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
 | 
			
		||||
[assembly: Guid("6cfee013-6e7c-432b-ac37-cabf0880c69a")]
 | 
			
		||||
 | 
			
		||||
// Version information for an assembly consists of the following four values:
 | 
			
		||||
//
 | 
			
		||||
//      Major Version
 | 
			
		||||
//      Minor Version 
 | 
			
		||||
//      Build Number
 | 
			
		||||
//      Revision
 | 
			
		||||
//
 | 
			
		||||
// You can specify all the values or you can default the Build and Revision Numbers 
 | 
			
		||||
// by using the '*' as shown below:
 | 
			
		||||
// [assembly: AssemblyVersion("1.0.*")]
 | 
			
		||||
[assembly: AssemblyVersion("1.0.0.0")]
 | 
			
		||||
[assembly: AssemblyFileVersion("1.0.0.0")]
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<packages>
 | 
			
		||||
  <package id="ImageMagickSharp" version="1.0.0.18" targetFramework="net45" />
 | 
			
		||||
  <package id="ImageMagickSharp" version="1.0.0.18" targetFramework="net452" />
 | 
			
		||||
</packages>
 | 
			
		||||
@ -7,7 +7,7 @@ using MediaBrowser.Common.IO;
 | 
			
		||||
using MediaBrowser.Controller.IO;
 | 
			
		||||
using MediaBrowser.Model.IO;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Drawing.GDI
 | 
			
		||||
namespace Emby.Drawing.Net
 | 
			
		||||
{
 | 
			
		||||
    public static class DynamicImageHelpers
 | 
			
		||||
    {
 | 
			
		||||
							
								
								
									
										78
									
								
								Emby.Drawing.Net/Emby.Drawing.Net.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								Emby.Drawing.Net/Emby.Drawing.Net.csproj
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,78 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
 | 
			
		||||
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
 | 
			
		||||
    <ProjectGuid>{C97A239E-A96C-4D64-A844-CCF8CC30AECB}</ProjectGuid>
 | 
			
		||||
    <OutputType>Library</OutputType>
 | 
			
		||||
    <AppDesignerFolder>Properties</AppDesignerFolder>
 | 
			
		||||
    <RootNamespace>Emby.Drawing.Net</RootNamespace>
 | 
			
		||||
    <AssemblyName>Emby.Drawing.Net</AssemblyName>
 | 
			
		||||
    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
 | 
			
		||||
    <FileAlignment>512</FileAlignment>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <Optimize>false</Optimize>
 | 
			
		||||
    <OutputPath>bin\Debug\</OutputPath>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
 | 
			
		||||
    <DebugType>pdbonly</DebugType>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <OutputPath>bin\Release\</OutputPath>
 | 
			
		||||
    <DefineConstants>TRACE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Reference Include="System" />
 | 
			
		||||
    <Reference Include="System.Core" />
 | 
			
		||||
    <Reference Include="System.Drawing" />
 | 
			
		||||
    <Reference Include="System.Xml.Linq" />
 | 
			
		||||
    <Reference Include="System.Data.DataSetExtensions" />
 | 
			
		||||
    <Reference Include="Microsoft.CSharp" />
 | 
			
		||||
    <Reference Include="System.Data" />
 | 
			
		||||
    <Reference Include="System.Net.Http" />
 | 
			
		||||
    <Reference Include="System.Xml" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="DynamicImageHelpers.cs" />
 | 
			
		||||
    <Compile Include="GDIImageEncoder.cs" />
 | 
			
		||||
    <Compile Include="ImageExtensions.cs" />
 | 
			
		||||
    <Compile Include="ImageHelpers.cs" />
 | 
			
		||||
    <Compile Include="PercentPlayedDrawer.cs" />
 | 
			
		||||
    <Compile Include="PlayedIndicatorDrawer.cs" />
 | 
			
		||||
    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
			
		||||
    <Compile Include="UnplayedCountIndicator.cs" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
 | 
			
		||||
      <Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
 | 
			
		||||
      <Name>MediaBrowser.Common</Name>
 | 
			
		||||
    </ProjectReference>
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj">
 | 
			
		||||
      <Project>{17e1f4e6-8abd-4fe5-9ecf-43d4b6087ba2}</Project>
 | 
			
		||||
      <Name>MediaBrowser.Controller</Name>
 | 
			
		||||
    </ProjectReference>
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj">
 | 
			
		||||
      <Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
 | 
			
		||||
      <Name>MediaBrowser.Model</Name>
 | 
			
		||||
    </ProjectReference>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <EmbeddedResource Include="empty.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
			
		||||
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
 | 
			
		||||
       Other similar extension points exist, see Microsoft.Common.targets.
 | 
			
		||||
  <Target Name="BeforeBuild">
 | 
			
		||||
  </Target>
 | 
			
		||||
  <Target Name="AfterBuild">
 | 
			
		||||
  </Target>
 | 
			
		||||
  -->
 | 
			
		||||
</Project>
 | 
			
		||||
@ -12,7 +12,7 @@ using MediaBrowser.Controller.IO;
 | 
			
		||||
using MediaBrowser.Model.IO;
 | 
			
		||||
using ImageFormat = MediaBrowser.Model.Drawing.ImageFormat;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Drawing.GDI
 | 
			
		||||
namespace Emby.Drawing.Net
 | 
			
		||||
{
 | 
			
		||||
    public class GDIImageEncoder : IImageEncoder
 | 
			
		||||
    {
 | 
			
		||||
@ -4,7 +4,7 @@ using System.Drawing.Drawing2D;
 | 
			
		||||
using System.Drawing.Imaging;
 | 
			
		||||
using System.IO;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Drawing.GDI
 | 
			
		||||
namespace Emby.Drawing.Net
 | 
			
		||||
{
 | 
			
		||||
    public static class ImageExtensions
 | 
			
		||||
    {
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Drawing
 | 
			
		||||
namespace Emby.Drawing.Net
 | 
			
		||||
{
 | 
			
		||||
    internal static class ImageHelpers
 | 
			
		||||
    {
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Drawing.GDI
 | 
			
		||||
namespace Emby.Drawing.Net
 | 
			
		||||
{
 | 
			
		||||
    public class PercentPlayedDrawer
 | 
			
		||||
    {
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Drawing.GDI
 | 
			
		||||
namespace Emby.Drawing.Net
 | 
			
		||||
{
 | 
			
		||||
    public class PlayedIndicatorDrawer
 | 
			
		||||
    {
 | 
			
		||||
							
								
								
									
										36
									
								
								Emby.Drawing.Net/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								Emby.Drawing.Net/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Runtime.CompilerServices;
 | 
			
		||||
using System.Runtime.InteropServices;
 | 
			
		||||
 | 
			
		||||
// General Information about an assembly is controlled through the following 
 | 
			
		||||
// set of attributes. Change these attribute values to modify the information
 | 
			
		||||
// associated with an assembly.
 | 
			
		||||
[assembly: AssemblyTitle("Emby.Drawing.Net")]
 | 
			
		||||
[assembly: AssemblyDescription("")]
 | 
			
		||||
[assembly: AssemblyConfiguration("")]
 | 
			
		||||
[assembly: AssemblyCompany("")]
 | 
			
		||||
[assembly: AssemblyProduct("Emby.Drawing.Net")]
 | 
			
		||||
[assembly: AssemblyCopyright("Copyright ©  2016")]
 | 
			
		||||
[assembly: AssemblyTrademark("")]
 | 
			
		||||
[assembly: AssemblyCulture("")]
 | 
			
		||||
 | 
			
		||||
// Setting ComVisible to false makes the types in this assembly not visible 
 | 
			
		||||
// to COM components.  If you need to access a type in this assembly from 
 | 
			
		||||
// COM, set the ComVisible attribute to true on that type.
 | 
			
		||||
[assembly: ComVisible(false)]
 | 
			
		||||
 | 
			
		||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
 | 
			
		||||
[assembly: Guid("c97a239e-a96c-4d64-a844-ccf8cc30aecb")]
 | 
			
		||||
 | 
			
		||||
// Version information for an assembly consists of the following four values:
 | 
			
		||||
//
 | 
			
		||||
//      Major Version
 | 
			
		||||
//      Minor Version 
 | 
			
		||||
//      Build Number
 | 
			
		||||
//      Revision
 | 
			
		||||
//
 | 
			
		||||
// You can specify all the values or you can default the Build and Revision Numbers 
 | 
			
		||||
// by using the '*' as shown below:
 | 
			
		||||
// [assembly: AssemblyVersion("1.0.*")]
 | 
			
		||||
[assembly: AssemblyVersion("1.0.0.0")]
 | 
			
		||||
[assembly: AssemblyFileVersion("1.0.0.0")]
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Drawing.GDI
 | 
			
		||||
namespace Emby.Drawing.Net
 | 
			
		||||
{
 | 
			
		||||
    public class UnplayedCountIndicator
 | 
			
		||||
    {
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 158 B After Width: | Height: | Size: 158 B  | 
@ -48,7 +48,7 @@ namespace Emby.Drawing.Common
 | 
			
		||||
        /// <exception cref="ArgumentException">The image was of an unrecognised format.</exception>
 | 
			
		||||
        public static ImageSize GetDimensions(string path, ILogger logger, IFileSystem fileSystem)
 | 
			
		||||
        {
 | 
			
		||||
            using (var fs = File.OpenRead(path))
 | 
			
		||||
            using (var fs = fileSystem.OpenRead(path))
 | 
			
		||||
            {
 | 
			
		||||
                using (var binaryReader = new BinaryReader(fs))
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
@ -9,10 +9,11 @@
 | 
			
		||||
    <AppDesignerFolder>Properties</AppDesignerFolder>
 | 
			
		||||
    <RootNamespace>Emby.Drawing</RootNamespace>
 | 
			
		||||
    <AssemblyName>Emby.Drawing</AssemblyName>
 | 
			
		||||
    <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
 | 
			
		||||
    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
 | 
			
		||||
    <TargetFrameworkProfile>Profile7</TargetFrameworkProfile>
 | 
			
		||||
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
 | 
			
		||||
    <FileAlignment>512</FileAlignment>
 | 
			
		||||
    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
 | 
			
		||||
    <TargetFrameworkProfile />
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
@ -32,18 +33,6 @@
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Reference Include="ImageMagickSharp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
 | 
			
		||||
      <SpecificVersion>False</SpecificVersion>
 | 
			
		||||
      <HintPath>..\packages\ImageMagickSharp.1.0.0.18\lib\net45\ImageMagickSharp.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="System" />
 | 
			
		||||
    <Reference Include="System.Core" />
 | 
			
		||||
    <Reference Include="System.Drawing" />
 | 
			
		||||
    <Reference Include="System.Xml.Linq" />
 | 
			
		||||
    <Reference Include="System.Data.DataSetExtensions" />
 | 
			
		||||
    <Reference Include="Microsoft.CSharp" />
 | 
			
		||||
    <Reference Include="System.Data" />
 | 
			
		||||
    <Reference Include="System.Xml" />
 | 
			
		||||
    <Reference Include="TagLib.Portable">
 | 
			
		||||
      <HintPath>..\ThirdParty\taglib\TagLib.Portable.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
@ -53,25 +42,9 @@
 | 
			
		||||
      <Link>Properties\SharedVersion.cs</Link>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Common\ImageHeader.cs" />
 | 
			
		||||
    <Compile Include="GDI\DynamicImageHelpers.cs" />
 | 
			
		||||
    <Compile Include="GDI\GDIImageEncoder.cs" />
 | 
			
		||||
    <Compile Include="GDI\ImageExtensions.cs" />
 | 
			
		||||
    <Compile Include="GDI\PercentPlayedDrawer.cs" />
 | 
			
		||||
    <Compile Include="GDI\PlayedIndicatorDrawer.cs" />
 | 
			
		||||
    <Compile Include="GDI\UnplayedCountIndicator.cs" />
 | 
			
		||||
    <Compile Include="IImageEncoder.cs" />
 | 
			
		||||
    <Compile Include="ImageHelpers.cs" />
 | 
			
		||||
    <Compile Include="ImageMagick\ImageMagickEncoder.cs" />
 | 
			
		||||
    <Compile Include="ImageMagick\StripCollageBuilder.cs" />
 | 
			
		||||
    <Compile Include="ImageProcessor.cs" />
 | 
			
		||||
    <Compile Include="ImageMagick\PercentPlayedDrawer.cs" />
 | 
			
		||||
    <Compile Include="ImageMagick\PlayedIndicatorDrawer.cs" />
 | 
			
		||||
    <Compile Include="NullImageEncoder.cs" />
 | 
			
		||||
    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
			
		||||
    <Compile Include="ImageMagick\UnplayedCountIndicator.cs" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <EmbeddedResource Include="ImageMagick\fonts\robotoregular.ttf" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
 | 
			
		||||
@ -87,13 +60,8 @@
 | 
			
		||||
      <Name>MediaBrowser.Model</Name>
 | 
			
		||||
    </ProjectReference>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <None Include="packages.config" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <EmbeddedResource Include="GDI\empty.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
			
		||||
  <ItemGroup />
 | 
			
		||||
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
 | 
			
		||||
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
 | 
			
		||||
       Other similar extension points exist, see Microsoft.Common.targets.
 | 
			
		||||
  <Target Name="BeforeBuild">
 | 
			
		||||
 | 
			
		||||
@ -21,8 +21,8 @@ using MediaBrowser.Common.IO;
 | 
			
		||||
using MediaBrowser.Controller.IO;
 | 
			
		||||
using MediaBrowser.Controller.Library;
 | 
			
		||||
using MediaBrowser.Model.Net;
 | 
			
		||||
using MediaBrowser.Model.Threading;
 | 
			
		||||
using TagLib;
 | 
			
		||||
using File = System.IO.File;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Drawing
 | 
			
		||||
{
 | 
			
		||||
@ -65,7 +65,7 @@ namespace Emby.Drawing
 | 
			
		||||
            IFileSystem fileSystem,
 | 
			
		||||
            IJsonSerializer jsonSerializer,
 | 
			
		||||
            IImageEncoder imageEncoder,
 | 
			
		||||
            int maxConcurrentImageProcesses, Func<ILibraryManager> libraryManager)
 | 
			
		||||
            int maxConcurrentImageProcesses, Func<ILibraryManager> libraryManager, ITimerFactory timerFactory)
 | 
			
		||||
        {
 | 
			
		||||
            _logger = logger;
 | 
			
		||||
            _fileSystem = fileSystem;
 | 
			
		||||
@ -75,7 +75,7 @@ namespace Emby.Drawing
 | 
			
		||||
            _appPaths = appPaths;
 | 
			
		||||
 | 
			
		||||
            ImageEnhancers = new List<IImageEnhancer>();
 | 
			
		||||
            _saveImageSizeTimer = new Timer(SaveImageSizeCallback, null, Timeout.Infinite, Timeout.Infinite);
 | 
			
		||||
            _saveImageSizeTimer = timerFactory.Create(SaveImageSizeCallback, null, Timeout.Infinite, Timeout.Infinite);
 | 
			
		||||
 | 
			
		||||
            Dictionary<Guid, ImageSize> sizeDictionary;
 | 
			
		||||
 | 
			
		||||
@ -89,7 +89,7 @@ namespace Emby.Drawing
 | 
			
		||||
                // No biggie
 | 
			
		||||
                sizeDictionary = new Dictionary<Guid, ImageSize>();
 | 
			
		||||
            }
 | 
			
		||||
            catch (DirectoryNotFoundException)
 | 
			
		||||
            catch (IOException)
 | 
			
		||||
            {
 | 
			
		||||
                // No biggie
 | 
			
		||||
                sizeDictionary = new Dictionary<Guid, ImageSize>();
 | 
			
		||||
@ -286,7 +286,7 @@ namespace Emby.Drawing
 | 
			
		||||
        {
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                File.Copy(src, destination, true);
 | 
			
		||||
                _fileSystem.CopyFile(src, destination, true);
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
@ -600,7 +600,7 @@ namespace Emby.Drawing
 | 
			
		||||
            return ImageHeader.GetDimensions(path, _logger, _fileSystem);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private readonly Timer _saveImageSizeTimer;
 | 
			
		||||
        private readonly ITimer _saveImageSizeTimer;
 | 
			
		||||
        private const int SaveImageSizeTimeout = 5000;
 | 
			
		||||
        private readonly object _saveImageSizeLock = new object();
 | 
			
		||||
        private void StartSaveImageSizeTimer()
 | 
			
		||||
@ -801,7 +801,7 @@ namespace Emby.Drawing
 | 
			
		||||
 | 
			
		||||
                try
 | 
			
		||||
                {
 | 
			
		||||
                    File.Copy(tmpPath, enhancedImagePath, true);
 | 
			
		||||
                    _fileSystem.CopyFile(tmpPath, enhancedImagePath, true);
 | 
			
		||||
                }
 | 
			
		||||
                catch
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										17
									
								
								Emby.Drawing/project.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Emby.Drawing/project.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
			
		||||
{
 | 
			
		||||
    "frameworks":{
 | 
			
		||||
        "netstandard1.6":{
 | 
			
		||||
           "dependencies":{
 | 
			
		||||
                "NETStandard.Library":"1.6.0",
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        ".NETPortable,Version=v4.5,Profile=Profile7":{
 | 
			
		||||
            "buildOptions": {
 | 
			
		||||
                "define": [  ]
 | 
			
		||||
            },
 | 
			
		||||
            "frameworkAssemblies":{
 | 
			
		||||
                
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1,7 +1,4 @@
 | 
			
		||||
using Emby.Drawing;
 | 
			
		||||
using Emby.Drawing.GDI;
 | 
			
		||||
using Emby.Drawing.ImageMagick;
 | 
			
		||||
using MediaBrowser.Api;
 | 
			
		||||
using MediaBrowser.Api;
 | 
			
		||||
using MediaBrowser.Common;
 | 
			
		||||
using MediaBrowser.Common.Configuration;
 | 
			
		||||
using MediaBrowser.Common.Events;
 | 
			
		||||
@ -66,7 +63,6 @@ using Emby.Common.Implementations;
 | 
			
		||||
using Emby.Common.Implementations.Archiving;
 | 
			
		||||
using Emby.Common.Implementations.Networking;
 | 
			
		||||
using Emby.Common.Implementations.Reflection;
 | 
			
		||||
using Emby.Common.Implementations.Security;
 | 
			
		||||
using Emby.Common.Implementations.Serialization;
 | 
			
		||||
using Emby.Common.Implementations.TextEncoding;
 | 
			
		||||
using Emby.Common.Implementations.Updates;
 | 
			
		||||
@ -135,13 +131,13 @@ using MediaBrowser.Model.Services;
 | 
			
		||||
using MediaBrowser.Model.Social;
 | 
			
		||||
using MediaBrowser.Model.Text;
 | 
			
		||||
using MediaBrowser.Model.Xml;
 | 
			
		||||
using MediaBrowser.Server.Startup.Common.IO;
 | 
			
		||||
using OpenSubtitlesHandler;
 | 
			
		||||
using ServiceStack;
 | 
			
		||||
using SocketHttpListener.Primitives;
 | 
			
		||||
using StringExtensions = MediaBrowser.Controller.Extensions.StringExtensions;
 | 
			
		||||
using Emby.Drawing;
 | 
			
		||||
 | 
			
		||||
namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
namespace Emby.Server.Core
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Class CompositionRoot
 | 
			
		||||
@ -267,6 +263,10 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
        internal INativeApp NativeApp { get; set; }
 | 
			
		||||
 | 
			
		||||
        internal IPowerManagement PowerManagement { get; private set; }
 | 
			
		||||
        internal IImageEncoder ImageEncoder { get; private set; }
 | 
			
		||||
 | 
			
		||||
        private readonly Action<string, string> _certificateGenerator;
 | 
			
		||||
        private readonly Func<string> _defaultUserNameFactory;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Initializes a new instance of the <see cref="ApplicationHost" /> class.
 | 
			
		||||
@ -278,14 +278,30 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
            INativeApp nativeApp,
 | 
			
		||||
            IPowerManagement powerManagement,
 | 
			
		||||
            string releaseAssetFilename,
 | 
			
		||||
            IEnvironmentInfo environmentInfo)
 | 
			
		||||
            : base(applicationPaths, logManager, fileSystem, environmentInfo)
 | 
			
		||||
            IEnvironmentInfo environmentInfo,
 | 
			
		||||
            IImageEncoder imageEncoder,
 | 
			
		||||
            ISystemEvents systemEvents,
 | 
			
		||||
            IMemoryStreamFactory memoryStreamFactory,
 | 
			
		||||
            INetworkManager networkManager,
 | 
			
		||||
            Action<string, string> certificateGenerator,
 | 
			
		||||
            Func<string> defaultUsernameFactory)
 | 
			
		||||
            : base(applicationPaths, 
 | 
			
		||||
                  logManager, 
 | 
			
		||||
                  fileSystem, 
 | 
			
		||||
                  environmentInfo, 
 | 
			
		||||
                  systemEvents, 
 | 
			
		||||
                  memoryStreamFactory, 
 | 
			
		||||
                  networkManager)
 | 
			
		||||
        {
 | 
			
		||||
            _startupOptions = options;
 | 
			
		||||
            _certificateGenerator = certificateGenerator;
 | 
			
		||||
            _releaseAssetFilename = releaseAssetFilename;
 | 
			
		||||
            _defaultUserNameFactory = defaultUsernameFactory;
 | 
			
		||||
            NativeApp = nativeApp;
 | 
			
		||||
            PowerManagement = powerManagement;
 | 
			
		||||
 | 
			
		||||
            ImageEncoder = imageEncoder;
 | 
			
		||||
 | 
			
		||||
            SetBaseExceptionMessage();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -298,7 +314,7 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return _version ?? (_version = NativeApp.GetType().Assembly.GetName().Version);
 | 
			
		||||
                return _version ?? (_version = GetAssembly(NativeApp.GetType()).GetName().Version);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -324,6 +340,11 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private Assembly GetAssembly(Type type)
 | 
			
		||||
        {
 | 
			
		||||
            return type.GetTypeInfo().Assembly;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets a value indicating whether this instance can self restart.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
@ -408,21 +429,6 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
            LogManager.RemoveConsoleOutput();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override IMemoryStreamFactory CreateMemoryStreamProvider()
 | 
			
		||||
        {
 | 
			
		||||
            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
 | 
			
		||||
            {
 | 
			
		||||
                return new RecyclableMemoryStreamProvider();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return new MemoryStreamProvider();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override ISystemEvents CreateSystemEvents()
 | 
			
		||||
        {
 | 
			
		||||
            return new SystemEvents(LogManager.GetLogger("SystemEvents"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override IJsonSerializer CreateJsonSerializer()
 | 
			
		||||
        {
 | 
			
		||||
            try
 | 
			
		||||
@ -574,11 +580,11 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
 | 
			
		||||
            UserRepository = await GetUserRepository().ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
            var displayPreferencesRepo = new SqliteDisplayPreferencesRepository(LogManager, JsonSerializer, ApplicationPaths, NativeApp.GetDbConnector(), MemoryStreamProvider);
 | 
			
		||||
            var displayPreferencesRepo = new SqliteDisplayPreferencesRepository(LogManager, JsonSerializer, ApplicationPaths, NativeApp.GetDbConnector(), MemoryStreamFactory);
 | 
			
		||||
            DisplayPreferencesRepository = displayPreferencesRepo;
 | 
			
		||||
            RegisterSingleInstance(DisplayPreferencesRepository);
 | 
			
		||||
 | 
			
		||||
            var itemRepo = new SqliteItemRepository(ServerConfigurationManager, JsonSerializer, LogManager, NativeApp.GetDbConnector(), MemoryStreamProvider);
 | 
			
		||||
            var itemRepo = new SqliteItemRepository(ServerConfigurationManager, JsonSerializer, LogManager, NativeApp.GetDbConnector(), MemoryStreamFactory);
 | 
			
		||||
            ItemRepository = itemRepo;
 | 
			
		||||
            RegisterSingleInstance(ItemRepository);
 | 
			
		||||
 | 
			
		||||
@ -591,7 +597,7 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
            SyncRepository = await GetSyncRepository().ConfigureAwait(false);
 | 
			
		||||
            RegisterSingleInstance(SyncRepository);
 | 
			
		||||
 | 
			
		||||
            UserManager = new UserManager(LogManager.GetLogger("UserManager"), ServerConfigurationManager, UserRepository, XmlSerializer, NetworkManager, () => ImageProcessor, () => DtoService, () => ConnectManager, this, JsonSerializer, FileSystemManager, CryptographyProvider, Environment.UserName);
 | 
			
		||||
            UserManager = new UserManager(LogManager.GetLogger("UserManager"), ServerConfigurationManager, UserRepository, XmlSerializer, NetworkManager, () => ImageProcessor, () => DtoService, () => ConnectManager, this, JsonSerializer, FileSystemManager, CryptographyProvider, _defaultUserNameFactory());
 | 
			
		||||
            RegisterSingleInstance(UserManager);
 | 
			
		||||
 | 
			
		||||
            LibraryManager = new LibraryManager(Logger, TaskManager, UserManager, ServerConfigurationManager, UserDataManager, () => LibraryMonitor, FileSystemManager, () => ProviderManager, () => UserViewManager);
 | 
			
		||||
@ -603,17 +609,17 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
            LibraryMonitor = new LibraryMonitor(LogManager, TaskManager, LibraryManager, ServerConfigurationManager, FileSystemManager, TimerFactory, SystemEvents, EnvironmentInfo);
 | 
			
		||||
            RegisterSingleInstance(LibraryMonitor);
 | 
			
		||||
 | 
			
		||||
            ProviderManager = new ProviderManager(HttpClient, ServerConfigurationManager, LibraryMonitor, LogManager, FileSystemManager, ApplicationPaths, () => LibraryManager, JsonSerializer, MemoryStreamProvider);
 | 
			
		||||
            ProviderManager = new ProviderManager(HttpClient, ServerConfigurationManager, LibraryMonitor, LogManager, FileSystemManager, ApplicationPaths, () => LibraryManager, JsonSerializer, MemoryStreamFactory);
 | 
			
		||||
            RegisterSingleInstance(ProviderManager);
 | 
			
		||||
 | 
			
		||||
            RegisterSingleInstance<ISearchEngine>(() => new SearchEngine(LogManager, LibraryManager, UserManager));
 | 
			
		||||
 | 
			
		||||
            HttpServer = HttpServerFactory.CreateServer(this, LogManager, ServerConfigurationManager, NetworkManager, MemoryStreamProvider, "Emby", "web/index.html", textEncoding, SocketFactory, CryptographyProvider, JsonSerializer, XmlSerializer, EnvironmentInfo, Certificate);
 | 
			
		||||
            HttpServer = HttpServerFactory.CreateServer(this, LogManager, ServerConfigurationManager, NetworkManager, MemoryStreamFactory, "Emby", "web/index.html", textEncoding, SocketFactory, CryptographyProvider, JsonSerializer, XmlSerializer, EnvironmentInfo, Certificate);
 | 
			
		||||
            HttpServer.GlobalResponse = LocalizationManager.GetLocalizedString("StartupEmbyServerIsLoading");
 | 
			
		||||
            RegisterSingleInstance(HttpServer, false);
 | 
			
		||||
            progress.Report(10);
 | 
			
		||||
 | 
			
		||||
            ServerManager = new ServerManager(this, JsonSerializer, LogManager.GetLogger("ServerManager"), ServerConfigurationManager, MemoryStreamProvider, textEncoding);
 | 
			
		||||
            ServerManager = new ServerManager(this, JsonSerializer, LogManager.GetLogger("ServerManager"), ServerConfigurationManager, MemoryStreamFactory, textEncoding);
 | 
			
		||||
            RegisterSingleInstance(ServerManager);
 | 
			
		||||
 | 
			
		||||
            var innerProgress = new ActionableProgress<double>();
 | 
			
		||||
@ -625,7 +631,7 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
            TVSeriesManager = new TVSeriesManager(UserManager, UserDataManager, LibraryManager, ServerConfigurationManager);
 | 
			
		||||
            RegisterSingleInstance(TVSeriesManager);
 | 
			
		||||
 | 
			
		||||
            SyncManager = new SyncManager(LibraryManager, SyncRepository, ImageProcessor, LogManager.GetLogger("SyncManager"), UserManager, () => DtoService, this, TVSeriesManager, () => MediaEncoder, FileSystemManager, () => SubtitleEncoder, ServerConfigurationManager, UserDataManager, () => MediaSourceManager, JsonSerializer, TaskManager, MemoryStreamProvider);
 | 
			
		||||
            SyncManager = new SyncManager(LibraryManager, SyncRepository, ImageProcessor, LogManager.GetLogger("SyncManager"), UserManager, () => DtoService, this, TVSeriesManager, () => MediaEncoder, FileSystemManager, () => SubtitleEncoder, ServerConfigurationManager, UserDataManager, () => MediaSourceManager, JsonSerializer, TaskManager, MemoryStreamFactory);
 | 
			
		||||
            RegisterSingleInstance(SyncManager);
 | 
			
		||||
 | 
			
		||||
            DtoService = new DtoService(LogManager.GetLogger("DtoService"), LibraryManager, UserDataManager, ItemRepository, ImageProcessor, ServerConfigurationManager, FileSystemManager, ProviderManager, () => ChannelManager, SyncManager, this, () => DeviceManager, () => MediaSourceManager, () => LiveTvManager);
 | 
			
		||||
@ -713,7 +719,7 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
            AuthService = new AuthService(UserManager, authContext, ServerConfigurationManager, ConnectManager, SessionManager, DeviceManager);
 | 
			
		||||
            RegisterSingleInstance<IAuthService>(AuthService);
 | 
			
		||||
 | 
			
		||||
            SubtitleEncoder = new SubtitleEncoder(LibraryManager, LogManager.GetLogger("SubtitleEncoder"), ApplicationPaths, FileSystemManager, MediaEncoder, JsonSerializer, HttpClient, MediaSourceManager, MemoryStreamProvider, ProcessFactory, textEncoding);
 | 
			
		||||
            SubtitleEncoder = new SubtitleEncoder(LibraryManager, LogManager.GetLogger("SubtitleEncoder"), ApplicationPaths, FileSystemManager, MediaEncoder, JsonSerializer, HttpClient, MediaSourceManager, MemoryStreamFactory, ProcessFactory, textEncoding);
 | 
			
		||||
            RegisterSingleInstance(SubtitleEncoder);
 | 
			
		||||
 | 
			
		||||
            await displayPreferencesRepo.Initialize().ConfigureAwait(false);
 | 
			
		||||
@ -742,7 +748,7 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
            {
 | 
			
		||||
                X509Certificate2 localCert = new X509Certificate2(certificateLocation);
 | 
			
		||||
                //localCert.PrivateKey = PrivateKey.CreateFromFile(pvk_file).RSA;
 | 
			
		||||
                if (localCert.PrivateKey == null)
 | 
			
		||||
                if (!localCert.HasPrivateKey)
 | 
			
		||||
                {
 | 
			
		||||
                    //throw new FileNotFoundException("Secure requested, no private key included", certificateLocation);
 | 
			
		||||
                    return null;
 | 
			
		||||
@ -766,38 +772,7 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
                int.TryParse(_startupOptions.GetOption("-imagethreads"), NumberStyles.Any, CultureInfo.InvariantCulture, out maxConcurrentImageProcesses);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return new ImageProcessor(LogManager.GetLogger("ImageProcessor"), ServerConfigurationManager.ApplicationPaths, FileSystemManager, JsonSerializer, GetImageEncoder(), maxConcurrentImageProcesses, () => LibraryManager);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private IImageEncoder GetImageEncoder()
 | 
			
		||||
        {
 | 
			
		||||
            if (!_startupOptions.ContainsOption("-enablegdi"))
 | 
			
		||||
            {
 | 
			
		||||
                try
 | 
			
		||||
                {
 | 
			
		||||
                    return new ImageMagickEncoder(LogManager.GetLogger("ImageMagick"), ApplicationPaths, HttpClient, FileSystemManager, ServerConfigurationManager);
 | 
			
		||||
                }
 | 
			
		||||
                catch
 | 
			
		||||
                {
 | 
			
		||||
                    Logger.Error("Error loading ImageMagick. Will revert to GDI.");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                return new GDIImageEncoder(FileSystemManager, LogManager.GetLogger("GDI"));
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                Logger.Error("Error loading GDI. Will revert to NullImageEncoder.");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return new NullImageEncoder();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override INetworkManager CreateNetworkManager(ILogger logger)
 | 
			
		||||
        {
 | 
			
		||||
            return NativeApp.CreateNetworkManager(logger);
 | 
			
		||||
            return new ImageProcessor(LogManager.GetLogger("ImageProcessor"), ServerConfigurationManager.ApplicationPaths, FileSystemManager, JsonSerializer, ImageEncoder, maxConcurrentImageProcesses, () => LibraryManager, TimerFactory);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
@ -831,10 +806,11 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
                () => SubtitleEncoder,
 | 
			
		||||
                () => MediaSourceManager,
 | 
			
		||||
                HttpClient,
 | 
			
		||||
                ZipClient, MemoryStreamProvider,
 | 
			
		||||
                ZipClient, 
 | 
			
		||||
                MemoryStreamFactory,
 | 
			
		||||
                ProcessFactory,
 | 
			
		||||
                Environment.Is64BitOperatingSystem ? (Environment.ProcessorCount > 2 ? 14000 : 20000) : 40000,
 | 
			
		||||
                Environment.OSVersion.Platform == PlatformID.Win32NT);
 | 
			
		||||
                (Environment.ProcessorCount > 2 ? 14000 : 40000),
 | 
			
		||||
                EnvironmentInfo.OperatingSystem == MediaBrowser.Model.System.OperatingSystem.Windows);
 | 
			
		||||
 | 
			
		||||
            MediaEncoder = mediaEncoder;
 | 
			
		||||
            RegisterSingleInstance(MediaEncoder);
 | 
			
		||||
@ -846,7 +822,7 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
        /// <returns>Task{IUserRepository}.</returns>
 | 
			
		||||
        private async Task<IUserRepository> GetUserRepository()
 | 
			
		||||
        {
 | 
			
		||||
            var repo = new SqliteUserRepository(LogManager, ApplicationPaths, JsonSerializer, NativeApp.GetDbConnector(), MemoryStreamProvider);
 | 
			
		||||
            var repo = new SqliteUserRepository(LogManager, ApplicationPaths, JsonSerializer, NativeApp.GetDbConnector(), MemoryStreamFactory);
 | 
			
		||||
 | 
			
		||||
            await repo.Initialize().ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
@ -1071,7 +1047,7 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
 | 
			
		||||
                    try
 | 
			
		||||
                    {
 | 
			
		||||
                        CertificateGenerator.CreateSelfSignCertificatePfx(certPath, certHost, Logger);
 | 
			
		||||
                        _certificateGenerator(certPath, certHost);
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (Exception ex)
 | 
			
		||||
                    {
 | 
			
		||||
@ -1182,51 +1158,51 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
            // This will prevent the .dll file from getting locked, and allow us to replace it when needed
 | 
			
		||||
 | 
			
		||||
            // Include composable parts in the Api assembly 
 | 
			
		||||
            list.Add(typeof(ApiEntryPoint).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(ApiEntryPoint)));
 | 
			
		||||
 | 
			
		||||
            // Include composable parts in the Dashboard assembly 
 | 
			
		||||
            list.Add(typeof(DashboardService).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(DashboardService)));
 | 
			
		||||
 | 
			
		||||
            // Include composable parts in the Model assembly 
 | 
			
		||||
            list.Add(typeof(SystemInfo).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(SystemInfo)));
 | 
			
		||||
 | 
			
		||||
            // Include composable parts in the Common assembly 
 | 
			
		||||
            list.Add(typeof(IApplicationHost).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(IApplicationHost)));
 | 
			
		||||
 | 
			
		||||
            // Include composable parts in the Controller assembly 
 | 
			
		||||
            list.Add(typeof(IServerApplicationHost).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(IServerApplicationHost)));
 | 
			
		||||
 | 
			
		||||
            // Include composable parts in the Providers assembly 
 | 
			
		||||
            list.Add(typeof(ProviderUtils).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(ProviderUtils)));
 | 
			
		||||
 | 
			
		||||
            // Include composable parts in the Photos assembly 
 | 
			
		||||
            list.Add(typeof(PhotoProvider).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(PhotoProvider)));
 | 
			
		||||
 | 
			
		||||
            // Common implementations
 | 
			
		||||
            list.Add(typeof(TaskManager).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(TaskManager)));
 | 
			
		||||
 | 
			
		||||
            // Emby.Server implementations
 | 
			
		||||
            list.Add(typeof(InstallationManager).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(InstallationManager)));
 | 
			
		||||
 | 
			
		||||
            // Emby.Server.Core
 | 
			
		||||
            list.Add(typeof(ServerApplicationPaths).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(ServerApplicationPaths)));
 | 
			
		||||
 | 
			
		||||
            // MediaEncoding
 | 
			
		||||
            list.Add(typeof(MediaEncoder).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(MediaEncoder)));
 | 
			
		||||
 | 
			
		||||
            // Dlna 
 | 
			
		||||
            list.Add(typeof(DlnaEntryPoint).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(DlnaEntryPoint)));
 | 
			
		||||
 | 
			
		||||
            // Local metadata 
 | 
			
		||||
            list.Add(typeof(BoxSetXmlSaver).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(BoxSetXmlSaver)));
 | 
			
		||||
 | 
			
		||||
            // Xbmc 
 | 
			
		||||
            list.Add(typeof(ArtistNfoProvider).Assembly);
 | 
			
		||||
            list.Add(GetAssembly(typeof(ArtistNfoProvider)));
 | 
			
		||||
 | 
			
		||||
            list.AddRange(NativeApp.GetAssembliesWithParts());
 | 
			
		||||
 | 
			
		||||
            // Include composable parts in the running assembly
 | 
			
		||||
            list.Add(GetType().Assembly);
 | 
			
		||||
            list.Add(GetAssembly(GetType()));
 | 
			
		||||
 | 
			
		||||
            return list;
 | 
			
		||||
        }
 | 
			
		||||
@ -16,6 +16,14 @@
 | 
			
		||||
    <SchemaVersion>2.0</SchemaVersion>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\Emby.Drawing\Emby.Drawing.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\Emby.Photos\Emby.Photos.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.Api\MediaBrowser.Api.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.XbmcMetadata\MediaBrowser.XbmcMetadata.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.LocalMetadata\MediaBrowser.LocalMetadata.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.WebDashboard\MediaBrowser.WebDashboard.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.MediaEncoding\MediaBrowser.MediaEncoding.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\Emby.Dlna\Emby.Dlna.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\Emby.Server.Implementations\Emby.Server.Implementations.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj" />
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,7 @@ using MediaBrowser.Model.Text;
 | 
			
		||||
using ServiceStack.Text.Jsv;
 | 
			
		||||
using SocketHttpListener.Primitives;
 | 
			
		||||
 | 
			
		||||
namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
namespace Emby.Server.Core
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Class ServerFactory
 | 
			
		||||
@ -67,12 +67,6 @@ namespace Emby.Server.Core
 | 
			
		||||
        /// <param name="autorun">if set to <c>true</c> [autorun].</param>
 | 
			
		||||
        void ConfigureAutoRun(bool autorun);
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets the network manager.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns>INetworkManager.</returns>
 | 
			
		||||
        INetworkManager CreateNetworkManager(ILogger logger);
 | 
			
		||||
 | 
			
		||||
        FFMpegInstallInfo GetFfmpegInstallInfo();
 | 
			
		||||
 | 
			
		||||
        void LaunchUrl(string url);
 | 
			
		||||
 | 
			
		||||
@ -31,8 +31,33 @@
 | 
			
		||||
        },
 | 
			
		||||
        "MediaBrowser.Server.Implementations": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
        },
 | 
			
		||||
        "Emby.Dlna": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "Emby.Photos": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "MediaBrowser.Api": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "MediaBrowser.MediaEncoding": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "MediaBrowser.XbmcMetadata": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "MediaBrowser.LocalMetadata": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "MediaBrowser.WebDashboard": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "Emby.Drawing": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "SocketHttpListener.Portable": "1.0.50"    
 | 
			
		||||
		}
 | 
			
		||||
    },
 | 
			
		||||
    "netstandard1.6": {
 | 
			
		||||
      "imports": "dnxcore50",
 | 
			
		||||
@ -41,6 +66,10 @@
 | 
			
		||||
		"System.AppDomain": "2.0.11",
 | 
			
		||||
		"System.Globalization.Extensions": "4.0.1",
 | 
			
		||||
		"System.IO.FileSystem.Watcher": "4.0.0",
 | 
			
		||||
		"System.Net.Security": "4.0.0",
 | 
			
		||||
		"System.Security.Cryptography.X509Certificates": "4.1.0",
 | 
			
		||||
		"System.Runtime.Extensions": "4.1.0",
 | 
			
		||||
        "SocketHttpListener.Portable": "1.0.50",
 | 
			
		||||
		"MediaBrowser.Model": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
@ -61,6 +90,30 @@
 | 
			
		||||
        },
 | 
			
		||||
        "MediaBrowser.Server.Implementations": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "Emby.Dlna": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "Emby.Photos": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "MediaBrowser.Api": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "MediaBrowser.MediaEncoding": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "MediaBrowser.XbmcMetadata": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "MediaBrowser.LocalMetadata": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "MediaBrowser.WebDashboard": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        },
 | 
			
		||||
        "Emby.Drawing": {
 | 
			
		||||
          "target": "project"
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -278,9 +278,6 @@
 | 
			
		||||
    <Reference Include="ServiceStack">
 | 
			
		||||
      <HintPath>..\ThirdParty\ServiceStack\ServiceStack.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="SocketHttpListener.Portable">
 | 
			
		||||
      <HintPath>..\ThirdParty\emby\SocketHttpListener.Portable.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="UniversalDetector, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
 | 
			
		||||
      <HintPath>..\packages\UniversalDetector.1.0.1\lib\portable-net45+sl4+wp71+win8+wpa81\UniversalDetector.dll</HintPath>
 | 
			
		||||
      <Private>True</Private>
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,7 @@
 | 
			
		||||
using MediaBrowser.Controller.Drawing;
 | 
			
		||||
using System;
 | 
			
		||||
using MediaBrowser.Model.Drawing;
 | 
			
		||||
using System;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Drawing
 | 
			
		||||
namespace MediaBrowser.Controller.Drawing
 | 
			
		||||
{
 | 
			
		||||
    public interface IImageEncoder : IDisposable
 | 
			
		||||
    {
 | 
			
		||||
@ -88,6 +88,7 @@
 | 
			
		||||
    <Compile Include="Dlna\IEventManager.cs" />
 | 
			
		||||
    <Compile Include="Dlna\IMediaReceiverRegistrar.cs" />
 | 
			
		||||
    <Compile Include="Dlna\IUpnpService.cs" />
 | 
			
		||||
    <Compile Include="Drawing\IImageEncoder.cs" />
 | 
			
		||||
    <Compile Include="Drawing\IImageProcessor.cs" />
 | 
			
		||||
    <Compile Include="Drawing\ImageCollageOptions.cs" />
 | 
			
		||||
    <Compile Include="Drawing\ImageProcessingOptions.cs" />
 | 
			
		||||
 | 
			
		||||
@ -11,28 +11,28 @@ using MediaBrowser.Model.Xml;
 | 
			
		||||
 | 
			
		||||
namespace MediaBrowser.LocalMetadata.Providers
 | 
			
		||||
{
 | 
			
		||||
    public class PersonXmlProvider : BaseXmlProvider<Person>
 | 
			
		||||
    {
 | 
			
		||||
        private readonly ILogger _logger;
 | 
			
		||||
        private readonly IProviderManager _providerManager;
 | 
			
		||||
        protected IXmlReaderSettingsFactory XmlReaderSettingsFactory { get; private set; }
 | 
			
		||||
    //public class PersonXmlProvider : BaseXmlProvider<Person>
 | 
			
		||||
    //{
 | 
			
		||||
    //    private readonly ILogger _logger;
 | 
			
		||||
    //    private readonly IProviderManager _providerManager;
 | 
			
		||||
    //    protected IXmlReaderSettingsFactory XmlReaderSettingsFactory { get; private set; }
 | 
			
		||||
 | 
			
		||||
        public PersonXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager, IXmlReaderSettingsFactory xmlReaderSettingsFactory)
 | 
			
		||||
            : base(fileSystem)
 | 
			
		||||
        {
 | 
			
		||||
            _logger = logger;
 | 
			
		||||
            _providerManager = providerManager;
 | 
			
		||||
            XmlReaderSettingsFactory = xmlReaderSettingsFactory;
 | 
			
		||||
        }
 | 
			
		||||
    //    public PersonXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager, IXmlReaderSettingsFactory xmlReaderSettingsFactory)
 | 
			
		||||
    //        : base(fileSystem)
 | 
			
		||||
    //    {
 | 
			
		||||
    //        _logger = logger;
 | 
			
		||||
    //        _providerManager = providerManager;
 | 
			
		||||
    //        XmlReaderSettingsFactory = xmlReaderSettingsFactory;
 | 
			
		||||
    //    }
 | 
			
		||||
 | 
			
		||||
        protected override void Fetch(MetadataResult<Person> result, string path, CancellationToken cancellationToken)
 | 
			
		||||
        {
 | 
			
		||||
            new BaseItemXmlParser<Person>(_logger, _providerManager, XmlReaderSettingsFactory, FileSystem).Fetch(result, path, cancellationToken);
 | 
			
		||||
        }
 | 
			
		||||
    //    protected override void Fetch(MetadataResult<Person> result, string path, CancellationToken cancellationToken)
 | 
			
		||||
    //    {
 | 
			
		||||
    //        new BaseItemXmlParser<Person>(_logger, _providerManager, XmlReaderSettingsFactory, FileSystem).Fetch(result, path, cancellationToken);
 | 
			
		||||
    //    }
 | 
			
		||||
 | 
			
		||||
        protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
 | 
			
		||||
        {
 | 
			
		||||
            return directoryService.GetFile(Path.Combine(info.Path, "person.xml"));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    //    protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
 | 
			
		||||
    //    {
 | 
			
		||||
    //        return directoryService.GetFile(Path.Combine(info.Path, "person.xml"));
 | 
			
		||||
    //    }
 | 
			
		||||
    //}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -10,48 +10,48 @@ using MediaBrowser.Model.Xml;
 | 
			
		||||
 | 
			
		||||
namespace MediaBrowser.LocalMetadata.Savers
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Class PersonXmlSaver
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public class PersonXmlSaver : BaseXmlSaver
 | 
			
		||||
    {
 | 
			
		||||
        public override bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
 | 
			
		||||
        {
 | 
			
		||||
            if (!item.SupportsLocalMetadata)
 | 
			
		||||
            {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
    ///// <summary>
 | 
			
		||||
    ///// Class PersonXmlSaver
 | 
			
		||||
    ///// </summary>
 | 
			
		||||
    //public class PersonXmlSaver : BaseXmlSaver
 | 
			
		||||
    //{
 | 
			
		||||
    //    public override bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
 | 
			
		||||
    //    {
 | 
			
		||||
    //        if (!item.SupportsLocalMetadata)
 | 
			
		||||
    //        {
 | 
			
		||||
    //            return false;
 | 
			
		||||
    //        }
 | 
			
		||||
 | 
			
		||||
            return item is Person && updateType >= ItemUpdateType.MetadataDownload;
 | 
			
		||||
        }
 | 
			
		||||
    //        return item is Person && updateType >= ItemUpdateType.MetadataDownload;
 | 
			
		||||
    //    }
 | 
			
		||||
 | 
			
		||||
        protected override List<string> GetTagsUsed()
 | 
			
		||||
        {
 | 
			
		||||
            var list = new List<string>
 | 
			
		||||
            {
 | 
			
		||||
                "PlaceOfBirth"
 | 
			
		||||
            };
 | 
			
		||||
    //    protected override List<string> GetTagsUsed()
 | 
			
		||||
    //    {
 | 
			
		||||
    //        var list = new List<string>
 | 
			
		||||
    //        {
 | 
			
		||||
    //            "PlaceOfBirth"
 | 
			
		||||
    //        };
 | 
			
		||||
 | 
			
		||||
            return list;
 | 
			
		||||
        }
 | 
			
		||||
    //        return list;
 | 
			
		||||
    //    }
 | 
			
		||||
 | 
			
		||||
        protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
 | 
			
		||||
        {
 | 
			
		||||
            var person = (Person)item;
 | 
			
		||||
    //    protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
 | 
			
		||||
    //    {
 | 
			
		||||
    //        var person = (Person)item;
 | 
			
		||||
 | 
			
		||||
            if (person.ProductionLocations.Count > 0)
 | 
			
		||||
            {
 | 
			
		||||
                writer.WriteElementString("PlaceOfBirth", person.ProductionLocations[0]);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    //        if (person.ProductionLocations.Count > 0)
 | 
			
		||||
    //        {
 | 
			
		||||
    //            writer.WriteElementString("PlaceOfBirth", person.ProductionLocations[0]);
 | 
			
		||||
    //        }
 | 
			
		||||
    //    }
 | 
			
		||||
 | 
			
		||||
        protected override string GetLocalSavePath(IHasMetadata item)
 | 
			
		||||
        {
 | 
			
		||||
            return Path.Combine(item.Path, "person.xml");
 | 
			
		||||
        }
 | 
			
		||||
    //    protected override string GetLocalSavePath(IHasMetadata item)
 | 
			
		||||
    //    {
 | 
			
		||||
    //        return Path.Combine(item.Path, "person.xml");
 | 
			
		||||
    //    }
 | 
			
		||||
 | 
			
		||||
        public PersonXmlSaver(IFileSystem fileSystem, IServerConfigurationManager configurationManager, ILibraryManager libraryManager, IUserManager userManager, IUserDataManager userDataManager, ILogger logger, IXmlReaderSettingsFactory xmlReaderSettingsFactory) : base(fileSystem, configurationManager, libraryManager, userManager, userDataManager, logger, xmlReaderSettingsFactory)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    //    public PersonXmlSaver(IFileSystem fileSystem, IServerConfigurationManager configurationManager, ILibraryManager libraryManager, IUserManager userManager, IUserDataManager userDataManager, ILogger logger, IXmlReaderSettingsFactory xmlReaderSettingsFactory) : base(fileSystem, configurationManager, libraryManager, userManager, userDataManager, logger, xmlReaderSettingsFactory)
 | 
			
		||||
    //    {
 | 
			
		||||
    //    }
 | 
			
		||||
    //}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										46
									
								
								MediaBrowser.Server.Startup.Common/ImageEncoderHelper.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								MediaBrowser.Server.Startup.Common/ImageEncoderHelper.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
using Emby.Drawing;
 | 
			
		||||
using Emby.Drawing.Net;
 | 
			
		||||
using Emby.Drawing.ImageMagick;
 | 
			
		||||
using Emby.Server.Core;
 | 
			
		||||
using MediaBrowser.Common.Net;
 | 
			
		||||
using MediaBrowser.Controller.Configuration;
 | 
			
		||||
using MediaBrowser.Controller.Drawing;
 | 
			
		||||
using MediaBrowser.Model.IO;
 | 
			
		||||
using MediaBrowser.Model.Logging;
 | 
			
		||||
 | 
			
		||||
namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
{
 | 
			
		||||
    public class ImageEncoderHelper
 | 
			
		||||
    {
 | 
			
		||||
        public static IImageEncoder GetImageEncoder(ILogger logger, 
 | 
			
		||||
            ILogManager logManager, 
 | 
			
		||||
            IFileSystem fileSystem, 
 | 
			
		||||
            StartupOptions startupOptions, 
 | 
			
		||||
            IHttpClient httpClient,
 | 
			
		||||
            IServerConfigurationManager config)
 | 
			
		||||
        {
 | 
			
		||||
            if (!startupOptions.ContainsOption("-enablegdi"))
 | 
			
		||||
            {
 | 
			
		||||
                try
 | 
			
		||||
                {
 | 
			
		||||
                    return new ImageMagickEncoder(logManager.GetLogger("ImageMagick"), config.ApplicationPaths, httpClient, fileSystem, config);
 | 
			
		||||
                }
 | 
			
		||||
                catch
 | 
			
		||||
                {
 | 
			
		||||
                    logger.Error("Error loading ImageMagick. Will revert to GDI.");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                return new GDIImageEncoder(fileSystem, logManager.GetLogger("GDI"));
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                logger.Error("Error loading GDI. Will revert to NullImageEncoder.");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return new NullImageEncoder();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -60,8 +60,8 @@
 | 
			
		||||
      <SpecificVersion>False</SpecificVersion>
 | 
			
		||||
      <HintPath>..\packages\Mono.Posix.4.0.0.0\lib\net40\Mono.Posix.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="Patterns.Logging, Version=1.0.6151.30227, Culture=neutral, processorArchitecture=MSIL">
 | 
			
		||||
      <HintPath>..\packages\Patterns.Logging.1.0.0.6\lib\portable-net45+win8\Patterns.Logging.dll</HintPath>
 | 
			
		||||
    <Reference Include="Patterns.Logging, Version=1.0.6159.22455, Culture=neutral, processorArchitecture=MSIL">
 | 
			
		||||
      <HintPath>..\packages\Patterns.Logging.1.0.0.7\lib\netstandard1.3\Patterns.Logging.dll</HintPath>
 | 
			
		||||
      <Private>True</Private>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="ServiceStack, Version=4.0.0.0, Culture=neutral, processorArchitecture=MSIL">
 | 
			
		||||
@ -76,9 +76,9 @@
 | 
			
		||||
      <HintPath>..\packages\SimpleInjector.3.2.4\lib\net45\SimpleInjector.dll</HintPath>
 | 
			
		||||
      <Private>True</Private>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="SocketHttpListener.Portable, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
 | 
			
		||||
      <SpecificVersion>False</SpecificVersion>
 | 
			
		||||
      <HintPath>..\ThirdParty\emby\SocketHttpListener.Portable.dll</HintPath>
 | 
			
		||||
    <Reference Include="SocketHttpListener, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
 | 
			
		||||
      <HintPath>..\packages\SocketHttpListener.Portable.1.0.50\lib\portable-net45+win8\SocketHttpListener.dll</HintPath>
 | 
			
		||||
      <Private>True</Private>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="System" />
 | 
			
		||||
    <Reference Include="System.Configuration" />
 | 
			
		||||
@ -93,7 +93,6 @@
 | 
			
		||||
    <Compile Include="..\SharedVersion.cs">
 | 
			
		||||
      <Link>Properties\SharedVersion.cs</Link>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="ApplicationHost.cs" />
 | 
			
		||||
    <Compile Include="ApplicationPathHelper.cs" />
 | 
			
		||||
    <Compile Include="Cryptography\ASN1.cs" />
 | 
			
		||||
    <Compile Include="Cryptography\ASN1Convert.cs" />
 | 
			
		||||
@ -113,7 +112,7 @@
 | 
			
		||||
    <Compile Include="Cryptography\X509Extension.cs" />
 | 
			
		||||
    <Compile Include="Cryptography\X509Extensions.cs" />
 | 
			
		||||
    <Compile Include="Cryptography\X520Attributes.cs" />
 | 
			
		||||
    <Compile Include="HttpServerFactory.cs" />
 | 
			
		||||
    <Compile Include="ImageEncoderHelper.cs" />
 | 
			
		||||
    <Compile Include="IO\MemoryStreamProvider.cs" />
 | 
			
		||||
    <Compile Include="LiveTv\TunerHosts\SatIp\ChannelScan.cs" />
 | 
			
		||||
    <Compile Include="LiveTv\TunerHosts\SatIp\Rtcp\ReportBlock.cs" />
 | 
			
		||||
@ -145,6 +144,14 @@
 | 
			
		||||
      <Project>{805844ab-e92f-45e6-9d99-4f6d48d129a5}</Project>
 | 
			
		||||
      <Name>Emby.Dlna</Name>
 | 
			
		||||
    </ProjectReference>
 | 
			
		||||
    <ProjectReference Include="..\Emby.Drawing.ImageMagick\Emby.Drawing.ImageMagick.csproj">
 | 
			
		||||
      <Project>{6cfee013-6e7c-432b-ac37-cabf0880c69a}</Project>
 | 
			
		||||
      <Name>Emby.Drawing.ImageMagick</Name>
 | 
			
		||||
    </ProjectReference>
 | 
			
		||||
    <ProjectReference Include="..\Emby.Drawing.Net\Emby.Drawing.Net.csproj">
 | 
			
		||||
      <Project>{c97a239e-a96c-4d64-a844-ccf8cc30aecb}</Project>
 | 
			
		||||
      <Name>Emby.Drawing.Net</Name>
 | 
			
		||||
    </ProjectReference>
 | 
			
		||||
    <ProjectReference Include="..\Emby.Drawing\Emby.Drawing.csproj">
 | 
			
		||||
      <Project>{08fff49b-f175-4807-a2b5-73b0ebd9f716}</Project>
 | 
			
		||||
      <Name>Emby.Drawing</Name>
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,8 @@
 | 
			
		||||
  <package id="MediaBrowser.Naming" version="1.0.0.59" targetFramework="net46" />
 | 
			
		||||
  <package id="Microsoft.IO.RecyclableMemoryStream" version="1.1.0.0" targetFramework="net46" />
 | 
			
		||||
  <package id="Mono.Posix" version="4.0.0.0" targetFramework="net45" />
 | 
			
		||||
  <package id="Patterns.Logging" version="1.0.0.6" targetFramework="net46" />
 | 
			
		||||
  <package id="Patterns.Logging" version="1.0.0.7" targetFramework="net46" />
 | 
			
		||||
  <package id="ServiceStack.Text" version="4.5.4" targetFramework="net46" />
 | 
			
		||||
  <package id="SimpleInjector" version="3.2.4" targetFramework="net46" />
 | 
			
		||||
  <package id="SocketHttpListener.Portable" version="1.0.50" targetFramework="net46" />
 | 
			
		||||
</packages>
 | 
			
		||||
@ -74,6 +74,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Dlna", "Emby.Dlna\Emby
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Emby.Server.Core", "Emby.Server.Core\Emby.Server.Core.xproj", "{65AA7D67-8059-40CD-91F1-16D02687226C}"
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing.ImageMagick", "Emby.Drawing.ImageMagick\Emby.Drawing.ImageMagick.csproj", "{6CFEE013-6E7C-432B-AC37-CABF0880C69A}"
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing.Net", "Emby.Drawing.Net\Emby.Drawing.Net.csproj", "{C97A239E-A96C-4D64-A844-CCF8CC30AECB}"
 | 
			
		||||
EndProject
 | 
			
		||||
Global
 | 
			
		||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
			
		||||
		Debug|Any CPU = Debug|Any CPU
 | 
			
		||||
@ -718,6 +722,66 @@ Global
 | 
			
		||||
		{65AA7D67-8059-40CD-91F1-16D02687226C}.Release|x64.Build.0 = Release|Any CPU
 | 
			
		||||
		{65AA7D67-8059-40CD-91F1-16D02687226C}.Release|x86.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{65AA7D67-8059-40CD-91F1-16D02687226C}.Release|x86.Build.0 = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|Win32.Build.0 = Debug|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|x64.Build.0 = Debug|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|x86.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|x86.Build.0 = Debug|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release Mono|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release Mono|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release Mono|Win32.Build.0 = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release Mono|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release Mono|x64.Build.0 = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release Mono|x86.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release Mono|x86.Build.0 = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release|Win32.Build.0 = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release|x64.Build.0 = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release|x86.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Release|x86.Build.0 = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|Win32.Build.0 = Debug|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|x64.Build.0 = Debug|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|x86.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|x86.Build.0 = Debug|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|Win32.Build.0 = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|x64.Build.0 = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|x86.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|x86.Build.0 = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|Win32.Build.0 = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|x64.Build.0 = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|x86.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|x86.Build.0 = Release|Any CPU
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		HideSolutionNode = FALSE
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user