Explorar o código

Use memcpy instead of System.Runtime.CompilerServices.Unsafe

Jeremy Koritzinsky %!s(int64=8) %!d(string=hai) anos
pai
achega
e462e06193

+ 0 - 5
build/Unsafe.props

@@ -1,5 +0,0 @@
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="4.4.0" />
-  </ItemGroup>
-</Project>

+ 1 - 3
packages.cake

@@ -120,7 +120,6 @@ public class Packages
         var SharpDXDirect3D11Version = packageVersions["SharpDX.Direct3D11"].FirstOrDefault().Item1;
         var SharpDXDirect3D9Version = packageVersions["SharpDX.Direct3D9"].FirstOrDefault().Item1;
         var SharpDXDXGIVersion = packageVersions["SharpDX.DXGI"].FirstOrDefault().Item1;
-        var UnsafeVersion = packageVersions["System.Runtime.CompilerServices.Unsafe"].FirstOrDefault().Item1;
 
         context.Information("Package: Serilog, version: {0}", SerilogVersion);
         context.Information("Package: Sprache, version: {0}", SpracheVersion);
@@ -395,8 +394,7 @@ public class Packages
                     new NuSpecDependency() { Id = "SharpDX", Version = SharpDXVersion },
                     new NuSpecDependency() { Id = "SharpDX.Direct2D1", Version = SharpDXDirect2D1Version },
                     new NuSpecDependency() { Id = "SharpDX.Direct3D11", Version = SharpDXDirect3D11Version },
-                    new NuSpecDependency() { Id = "SharpDX.DXGI", Version = SharpDXDXGIVersion },
-                    new NuSpecDependency() { Id = "System.Runtime.CompilerServices.Unsafe", Version = UnsafeVersion }
+                    new NuSpecDependency() { Id = "SharpDX.DXGI", Version = SharpDXDXGIVersion }
                 },
                 Files = new []
                 {

+ 2 - 5
src/Android/Avalonia.Android/Resources/Resource.Designer.cs

@@ -40,14 +40,11 @@ namespace Avalonia.Android
 		public partial class String
 		{
 			
-			// aapt resource value: 0x7f020002
-			public static int ApplicationName = 2130837506;
-			
 			// aapt resource value: 0x7f020001
-			public static int Hello = 2130837505;
+			public static int ApplicationName = 2130837505;
 			
 			// aapt resource value: 0x7f020000
-			public static int library_name = 2130837504;
+			public static int Hello = 2130837504;
 			
 			static String()
 			{

+ 0 - 2
src/Windows/Avalonia.Direct2D1/Avalonia.Direct2D1.csproj

@@ -2,7 +2,6 @@
   <PropertyGroup>
     <TargetFramework>netstandard2.0</TargetFramework>
     <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="..\..\Shared\SharedAssemblyInfo.cs">
@@ -26,5 +25,4 @@
   <Import Project="..\..\..\build\SharpDX.props" />
   <Import Project="..\..\Shared\RenderHelpers\RenderHelpers.projitems" Label="Shared" />
   <Import Project="..\..\..\build\JetBrains.Annotations.props" />
-  <Import Project="..\..\..\build\Unsafe.props" />
 </Project>

+ 4 - 7
src/Windows/Avalonia.Direct2D1/FramebufferShimRenderTarget.cs

@@ -68,13 +68,10 @@ namespace Avalonia.Direct2D1
                     {
                         for (var y = 0; y < _target.Height; y++)
                         {
-                            unsafe
-                            {
-                                Unsafe.CopyBlock(
-                                    (void*)(_target.Address + _target.RowBytes * y),
-                                    (void*)(l.Data.DataPointer + l.Stride * y),
-                                    (uint)Math.Min(l.Stride, _target.RowBytes));
-                            }
+                            UnmanagedMethods.CopyMemory(
+                                (_target.Address + _target.RowBytes * y),
+                                (l.Data.DataPointer + l.Stride * y),
+                                (UIntPtr)Math.Min(l.Stride, _target.RowBytes));
                         }
                     }
                     Dispose();

+ 4 - 7
src/Windows/Avalonia.Direct2D1/Media/Imaging/WicBitmapImpl.cs

@@ -75,13 +75,10 @@ namespace Avalonia.Direct2D1.Media
             {
                 for (var row = 0; row < height; row++)
                 {
-                    unsafe
-                    {
-                        Unsafe.CopyBlock(
-                            (void*)(l.Data.DataPointer + row * l.Stride),
-                            (void*)(data + row * stride),
-                            (uint) l.Data.Pitch);
-                    }
+                    UnmanagedMethods.CopyMemory(
+                        (l.Data.DataPointer + row * l.Stride),
+                        (data + row * stride),
+                        (UIntPtr) l.Data.Pitch);
                 }
             }
         }

+ 3 - 0
src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs

@@ -947,6 +947,9 @@ namespace Avalonia.Win32.Interop
             uint dwMaximumSizeHigh,
             uint dwMaximumSizeLow,
             string lpName);
+
+        [DllImport("msvcrt.dll", EntryPoint="memcpy", SetLastError = false, CallingConvention=CallingConvention.Cdecl)]
+        public static extern IntPtr CopyMemory(IntPtr dest, IntPtr src, UIntPtr count); 
         
         public enum MONITOR
         {