From ae2aee402d30712ba10c115585ac35f34f897ec4 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 30 Jun 2023 21:42:54 +0100 Subject: [PATCH] Revert "fix native api loading." This reverts commit b580d3f986ea81907246d9b45665713d160f8439. --- .../Avalonia.Skia/Gpu/Metal/SkiaMetalApi.cs | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/Skia/Avalonia.Skia/Gpu/Metal/SkiaMetalApi.cs b/src/Skia/Avalonia.Skia/Gpu/Metal/SkiaMetalApi.cs index bfd486c60a..9475d96fc0 100644 --- a/src/Skia/Avalonia.Skia/Gpu/Metal/SkiaMetalApi.cs +++ b/src/Skia/Avalonia.Skia/Gpu/Metal/SkiaMetalApi.cs @@ -2,7 +2,6 @@ using System; using System.Diagnostics.CodeAnalysis; using System.Reflection; using System.Runtime.InteropServices; -using Avalonia.Compatibility; using Avalonia.Platform.Interop; using SkiaSharp; using BindingFlags = System.Reflection.BindingFlags; @@ -25,23 +24,19 @@ internal unsafe class SkiaMetalApi { // Make sure that skia is loaded GC.KeepAlive(new SKPaint()); - - var dll = NativeLibraryEx.Load("libSkiaSharp"); - - IntPtr address; - - if (NativeLibraryEx.TryGetExport(dll, "gr_direct_context_make_metal_with_options", out address)) - { - _gr_direct_context_make_metal_with_options = - (delegate* unmanaged[Stdcall] )address; - } - - if(NativeLibraryEx.TryGetExport(dll, "gr_backendrendertarget_new_metal", out address)) - { - _gr_backendrendertarget_new_metal = - (delegate* unmanaged[Stdcall])address; - } - + + var loader = AvaloniaLocator.Current.GetRequiredService(); +#if NET6_0_OR_GREATER + var dll = NativeLibrary.Load("libSkiaSharp", typeof(SKPaint).Assembly, null); +#else + var dll = loader.LoadLibrary("libSkiaSharp"); +#endif + _gr_direct_context_make_metal_with_options = (delegate* unmanaged[Stdcall] ) + loader.GetProcAddress(dll, "gr_direct_context_make_metal_with_options", false); + _gr_backendrendertarget_new_metal = + (delegate* unmanaged[Stdcall]) + loader.GetProcAddress(dll, "gr_backendrendertarget_new_metal", false); + _contextCtor = typeof(GRContext).GetConstructor( BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new[] { typeof(IntPtr), typeof(bool) }, null) ?? throw new MissingMemberException("GRContext.ctor(IntPtr,bool)");