From 8cbc753baaa26e898ba61a92996ae3309ec82b00 Mon Sep 17 00:00:00 2001 From: nathan Date: Fri, 14 Jul 2017 01:31:37 +0200 Subject: [PATCH] Windows JNA now uses JnaHelper --- src/dorkbox/util/jna/JnaHelper.java | 11 +++++++++++ src/dorkbox/util/jna/windows/GDI32.java | 7 +++---- src/dorkbox/util/jna/windows/Kernel32.java | 5 ++--- src/dorkbox/util/jna/windows/Shell32.java | 7 ++----- src/dorkbox/util/jna/windows/User32_32.java | 6 ++---- src/dorkbox/util/jna/windows/User32_64.java | 6 ++---- 6 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/dorkbox/util/jna/JnaHelper.java b/src/dorkbox/util/jna/JnaHelper.java index ee9dde0..db5de0a 100644 --- a/src/dorkbox/util/jna/JnaHelper.java +++ b/src/dorkbox/util/jna/JnaHelper.java @@ -17,10 +17,14 @@ package dorkbox.util.jna; import java.util.HashMap; import java.util.Map; +import java.util.Set; import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.NativeLibrary; +import com.sun.jna.win32.W32APIOptions; + +import dorkbox.util.OS; /** * Helper method to get the library info from JNA when registering via direct map @@ -33,6 +37,13 @@ class JnaHelper { final Map options = new HashMap(); options.put(Library.OPTION_CLASSLOADER, clazz.getClassLoader()); + if (OS.isWindows()) { + Set> entries = W32APIOptions.DEFAULT_OPTIONS.entrySet(); + for (Map.Entry entry : entries) { + options.put(entry.getKey(), entry.getValue()); + } + } + final NativeLibrary library = NativeLibrary.getInstance(libraryName, options); if (library == null) { throw new IllegalArgumentException(libraryName + " doesn't exist or cannot be loaded."); diff --git a/src/dorkbox/util/jna/windows/GDI32.java b/src/dorkbox/util/jna/windows/GDI32.java index cee7895..0692cfd 100644 --- a/src/dorkbox/util/jna/windows/GDI32.java +++ b/src/dorkbox/util/jna/windows/GDI32.java @@ -20,16 +20,15 @@ import static com.sun.jna.platform.win32.WinDef.HDC; import static com.sun.jna.platform.win32.WinGDI.BITMAPINFO; import static com.sun.jna.platform.win32.WinNT.HANDLE; -import com.sun.jna.Native; -import com.sun.jna.NativeLibrary; import com.sun.jna.Pointer; import com.sun.jna.ptr.PointerByReference; -import com.sun.jna.win32.W32APIOptions; + +import dorkbox.util.jna.JnaHelper; public class GDI32 { static { - Native.register(NativeLibrary.getInstance("GDI32", W32APIOptions.DEFAULT_OPTIONS)); + JnaHelper.register("GDI32", GDI32.class); } /** diff --git a/src/dorkbox/util/jna/windows/Kernel32.java b/src/dorkbox/util/jna/windows/Kernel32.java index 78b5c08..0916f58 100644 --- a/src/dorkbox/util/jna/windows/Kernel32.java +++ b/src/dorkbox/util/jna/windows/Kernel32.java @@ -19,12 +19,11 @@ import static com.sun.jna.platform.win32.WinNT.HANDLE; import com.sun.jna.Memory; import com.sun.jna.Native; -import com.sun.jna.NativeLibrary; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import com.sun.jna.ptr.PointerByReference; -import com.sun.jna.win32.W32APIOptions; +import dorkbox.util.jna.JnaHelper; import dorkbox.util.jna.windows.structs.CONSOLE_SCREEN_BUFFER_INFO; import dorkbox.util.jna.windows.structs.COORD; import dorkbox.util.jna.windows.structs.INPUT_RECORD; @@ -33,7 +32,7 @@ import dorkbox.util.jna.windows.structs.SMALL_RECT; public class Kernel32 { static { - Native.register(NativeLibrary.getInstance("kernel32", W32APIOptions.DEFAULT_OPTIONS)); + JnaHelper.register("kernel32", Kernel32.class); } // see: http://msdn.microsoft.com/en-us/library/ms682013%28VS.85%29.aspx diff --git a/src/dorkbox/util/jna/windows/Shell32.java b/src/dorkbox/util/jna/windows/Shell32.java index 33086ae..82e03c2 100644 --- a/src/dorkbox/util/jna/windows/Shell32.java +++ b/src/dorkbox/util/jna/windows/Shell32.java @@ -15,16 +15,13 @@ */ package dorkbox.util.jna.windows; -import com.sun.jna.Native; -import com.sun.jna.NativeLibrary; -import com.sun.jna.win32.W32APIOptions; - +import dorkbox.util.jna.JnaHelper; import dorkbox.util.jna.windows.structs.NOTIFYICONDATA; public class Shell32 { static { - Native.register(NativeLibrary.getInstance("shell32", W32APIOptions.DEFAULT_OPTIONS)); + JnaHelper.register("shell32", Shell32.class); } static public final int NIM_ADD = 0x0; diff --git a/src/dorkbox/util/jna/windows/User32_32.java b/src/dorkbox/util/jna/windows/User32_32.java index 664b5b4..004ffb5 100644 --- a/src/dorkbox/util/jna/windows/User32_32.java +++ b/src/dorkbox/util/jna/windows/User32_32.java @@ -26,13 +26,11 @@ import static com.sun.jna.platform.win32.WinDef.POINT; import static com.sun.jna.platform.win32.WinDef.WPARAM; import com.sun.jna.Callback; -import com.sun.jna.Native; -import com.sun.jna.NativeLibrary; import com.sun.jna.Pointer; import com.sun.jna.WString; import com.sun.jna.platform.win32.WinNT; -import com.sun.jna.win32.W32APIOptions; +import dorkbox.util.jna.JnaHelper; import dorkbox.util.jna.windows.structs.ICONINFO; /** @@ -45,7 +43,7 @@ import dorkbox.util.jna.windows.structs.ICONINFO; public class User32_32 implements User32 { static { - Native.register(NativeLibrary.getInstance("user32", W32APIOptions.DEFAULT_OPTIONS)); + JnaHelper.register("user32", User32_32.class); } // is replaced by the 64bit version diff --git a/src/dorkbox/util/jna/windows/User32_64.java b/src/dorkbox/util/jna/windows/User32_64.java index 1f6020d..55c403d 100644 --- a/src/dorkbox/util/jna/windows/User32_64.java +++ b/src/dorkbox/util/jna/windows/User32_64.java @@ -26,13 +26,11 @@ import static com.sun.jna.platform.win32.WinDef.POINT; import static com.sun.jna.platform.win32.WinDef.WPARAM; import com.sun.jna.Callback; -import com.sun.jna.Native; -import com.sun.jna.NativeLibrary; import com.sun.jna.Pointer; import com.sun.jna.WString; import com.sun.jna.platform.win32.WinNT; -import com.sun.jna.win32.W32APIOptions; +import dorkbox.util.jna.JnaHelper; import dorkbox.util.jna.windows.structs.ICONINFO; /** @@ -45,7 +43,7 @@ import dorkbox.util.jna.windows.structs.ICONINFO; public class User32_64 implements User32 { static { - Native.register(NativeLibrary.getInstance("user32", W32APIOptions.DEFAULT_OPTIONS)); + JnaHelper.register("user32", User32_64.class); } @Override