Skip to content

Commit 5e859d5

Browse files
authored
Cleanup NativeLibraryLoader & fix wrong library path (#1967)
* Cleanup NativeLibraryLoader * Fix wrong library path
1 parent 3f1c24e commit 5e859d5

File tree

2 files changed

+30
-73
lines changed

2 files changed

+30
-73
lines changed

jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java

Lines changed: 30 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2009-2022 jMonkeyEngine
2+
* Copyright (c) 2009-2023 jMonkeyEngine
33
* All rights reserved.
44
*
55
* Redistribution and use in source and binary forms, with or without
@@ -75,7 +75,7 @@ public final class NativeLibraryLoader {
7575
private static File extractionFolder = null;
7676

7777
private static final HashMap<NativeLibrary.Key, NativeLibrary> nativeLibraryMap
78-
= new HashMap<NativeLibrary.Key, NativeLibrary>();
78+
= new HashMap<>();
7979

8080
/**
8181
* Register a new known library.
@@ -120,55 +120,25 @@ public static void registerNativeLibrary(String name, Platform platform,
120120
}
121121

122122
static {
123-
// LWJGL
124-
registerNativeLibrary("lwjgl", Platform.Windows32, "native/windows/lwjgl.dll");
125-
registerNativeLibrary("lwjgl", Platform.Windows64, "native/windows/lwjgl64.dll");
126-
registerNativeLibrary("lwjgl", Platform.Linux32, "native/linux/liblwjgl.so");
127-
registerNativeLibrary("lwjgl", Platform.Linux64, "native/linux/liblwjgl64.so");
128-
registerNativeLibrary("lwjgl", Platform.MacOSX32, "native/macosx/liblwjgl.dylib");
129-
registerNativeLibrary("lwjgl", Platform.MacOSX64, "native/macosx/liblwjgl.dylib");
123+
// Note: LWJGL 3 handles its native library extracting & loading using
124+
// its own SharedLibraryLoader.
130125

131-
// OpenAL
132-
// For OSX: Need to add lib prefix when extracting
133-
registerNativeLibrary("openal", Platform.Windows32, "native/windows/OpenAL32.dll");
134-
registerNativeLibrary("openal", Platform.Windows64, "native/windows/OpenAL64.dll");
135-
registerNativeLibrary("openal", Platform.Linux32, "native/linux/libopenal.so");
136-
registerNativeLibrary("openal", Platform.Linux64, "native/linux/libopenal64.so");
137-
registerNativeLibrary("openal", Platform.MacOSX32, "native/macosx/openal.dylib", "libopenal.dylib");
138-
registerNativeLibrary("openal", Platform.MacOSX64, "native/macosx/openal.dylib", "libopenal.dylib");
139-
140-
// LWJGL 3.x
141-
registerNativeLibrary("lwjgl3", Platform.Windows32, "native/windows/lwjgl32.dll");
142-
registerNativeLibrary("lwjgl3", Platform.Windows64, "native/windows/lwjgl.dll");
143-
registerNativeLibrary("lwjgl3", Platform.Linux32, "native/linux/liblwjgl32.so");
144-
registerNativeLibrary("lwjgl3", Platform.Linux64, "native/linux/liblwjgl.so");
145-
registerNativeLibrary("lwjgl3", Platform.MacOSX32, "native/macosx/liblwjgl.dylib");
146-
registerNativeLibrary("lwjgl3", Platform.MacOSX64, "native/macosx/liblwjgl.dylib");
147-
148-
// GLFW for LWJGL 3.x
149-
registerNativeLibrary("glfw-lwjgl3", Platform.Windows32, "native/windows/glfw32.dll");
150-
registerNativeLibrary("glfw-lwjgl3", Platform.Windows64, "native/windows/glfw.dll");
151-
registerNativeLibrary("glfw-lwjgl3", Platform.Linux32, "native/linux/libglfw32.so");
152-
registerNativeLibrary("glfw-lwjgl3", Platform.Linux64, "native/linux/libglfw.so");
153-
registerNativeLibrary("glfw-lwjgl3", Platform.MacOSX32, "native/macosx/libglfw.dylib");
154-
registerNativeLibrary("glfw-lwjgl3", Platform.MacOSX64, "native/macosx/libglfw.dylib");
155-
156-
// jemalloc for LWJGL 3.x
157-
registerNativeLibrary("jemalloc-lwjgl3", Platform.Windows32, "native/windows/jemalloc32.dll");
158-
registerNativeLibrary("jemalloc-lwjgl3", Platform.Windows64, "native/windows/jemalloc.dll");
159-
registerNativeLibrary("jemalloc-lwjgl3", Platform.Linux32, "native/linux/libjemalloc32.so");
160-
registerNativeLibrary("jemalloc-lwjgl3", Platform.Linux64, "native/linux/libjemalloc.so");
161-
registerNativeLibrary("jemalloc-lwjgl3", Platform.MacOSX32, "native/macosx/libjemalloc.dylib");
162-
registerNativeLibrary("jemalloc-lwjgl3", Platform.MacOSX64, "native/macosx/libjemalloc.dylib");
126+
// LWJGL 2
127+
registerNativeLibrary("lwjgl", Platform.Windows32, "lwjgl.dll");
128+
registerNativeLibrary("lwjgl", Platform.Windows64, "lwjgl64.dll");
129+
registerNativeLibrary("lwjgl", Platform.Linux32, "liblwjgl.so");
130+
registerNativeLibrary("lwjgl", Platform.Linux64, "liblwjgl64.so");
131+
registerNativeLibrary("lwjgl", Platform.MacOSX32, "liblwjgl.dylib");
132+
registerNativeLibrary("lwjgl", Platform.MacOSX64, "liblwjgl.dylib");
163133

164-
// OpenAL for LWJGL 3.x
134+
// OpenAL for LWJGL 2
165135
// For OSX: Need to add lib prefix when extracting
166-
registerNativeLibrary("openal-lwjgl3", Platform.Windows32, "native/windows/OpenAL32.dll");
167-
registerNativeLibrary("openal-lwjgl3", Platform.Windows64, "native/windows/OpenAL.dll");
168-
registerNativeLibrary("openal-lwjgl3", Platform.Linux32, "native/linux/libopenal32.so");
169-
registerNativeLibrary("openal-lwjgl3", Platform.Linux64, "native/linux/libopenal.so");
170-
registerNativeLibrary("openal-lwjgl3", Platform.MacOSX32, "native/macosx/openal.dylib", "libopenal.dylib");
171-
registerNativeLibrary("openal-lwjgl3", Platform.MacOSX64, "native/macosx/openal.dylib", "libopenal.dylib");
136+
registerNativeLibrary("openal", Platform.Windows32, "OpenAL32.dll");
137+
registerNativeLibrary("openal", Platform.Windows64, "OpenAL64.dll");
138+
registerNativeLibrary("openal", Platform.Linux32, "libopenal.so");
139+
registerNativeLibrary("openal", Platform.Linux64, "libopenal64.so");
140+
registerNativeLibrary("openal", Platform.MacOSX32, "openal.dylib", "libopenal.dylib");
141+
registerNativeLibrary("openal", Platform.MacOSX64, "openal.dylib", "libopenal.dylib");
172142

173143
// BulletJme
174144
registerNativeLibrary("bulletjme", Platform.Windows32, "native/windows/x86/bulletjme.dll");
@@ -184,16 +154,16 @@ public static void registerNativeLibrary(String name, Platform platform,
184154

185155
// JInput
186156
// For OSX: Need to rename extension jnilib -> dylib when extracting
187-
registerNativeLibrary("jinput", Platform.Windows32, "native/windows/jinput-raw.dll");
188-
registerNativeLibrary("jinput", Platform.Windows64, "native/windows/jinput-raw_64.dll");
189-
registerNativeLibrary("jinput", Platform.Linux32, "native/windows/libjinput-linux.so");
190-
registerNativeLibrary("jinput", Platform.Linux64, "native/windows/libjinput-linux64.so");
191-
registerNativeLibrary("jinput", Platform.MacOSX32, "native/macosx/libjinput-osx.jnilib", "libjinput-osx.dylib");
192-
registerNativeLibrary("jinput", Platform.MacOSX64, "native/macosx/libjinput-osx.jnilib", "libjinput-osx.dylib");
157+
registerNativeLibrary("jinput", Platform.Windows32, "jinput-raw.dll");
158+
registerNativeLibrary("jinput", Platform.Windows64, "jinput-raw_64.dll");
159+
registerNativeLibrary("jinput", Platform.Linux32, "libjinput-linux.so");
160+
registerNativeLibrary("jinput", Platform.Linux64, "libjinput-linux64.so");
161+
registerNativeLibrary("jinput", Platform.MacOSX32, "libjinput-osx.jnilib", "libjinput-osx.dylib");
162+
registerNativeLibrary("jinput", Platform.MacOSX64, "libjinput-osx.jnilib", "libjinput-osx.dylib");
193163

194164
// JInput Auxiliary (only required on Windows)
195-
registerNativeLibrary("jinput-dx8", Platform.Windows32, "native/windows/jinput-dx8.dll");
196-
registerNativeLibrary("jinput-dx8", Platform.Windows64, "native/windows/jinput-dx8_64.dll");
165+
registerNativeLibrary("jinput-dx8", Platform.Windows32, "jinput-dx8.dll");
166+
registerNativeLibrary("jinput-dx8", Platform.Windows64, "jinput-dx8_64.dll");
197167
registerNativeLibrary("jinput-dx8", Platform.Linux32, null);
198168
registerNativeLibrary("jinput-dx8", Platform.Linux64, null);
199169
registerNativeLibrary("jinput-dx8", Platform.MacOSX32, null);
@@ -294,19 +264,14 @@ private static File getJmeUserCacheFolder() {
294264
File userHomeFolder = new File(System.getProperty("user.home"));
295265
File userCacheFolder = null;
296266

297-
switch (JmeSystem.getPlatform()) {
298-
case Linux32:
299-
case Linux64:
267+
switch (JmeSystem.getPlatform().getOs()) {
268+
case Linux:
300269
userCacheFolder = new File(userHomeFolder, ".cache");
301270
break;
302-
case MacOSX32:
303-
case MacOSX64:
304-
case MacOSX_PPC32:
305-
case MacOSX_PPC64:
271+
case MacOS:
306272
userCacheFolder = new File(new File(userHomeFolder, "Library"), "Caches");
307273
break;
308-
case Windows32:
309-
case Windows64:
274+
case Windows:
310275
userCacheFolder = new File(new File(userHomeFolder, "AppData"), "Local");
311276
break;
312277
}

jme3-vr/src/main/java/com/jme3/system/lwjgl/LwjglContextVR.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -119,17 +119,9 @@ protected void loadNatives() {
119119
return;
120120
}
121121

122-
if ("LWJGL".equals(settings.getAudioRenderer())) {
123-
NativeLibraryLoader.loadNativeLibrary("openal-lwjgl3", true);
124-
}
125-
126122
if (NativeLibraryLoader.isUsingNativeBullet()) {
127123
NativeLibraryLoader.loadNativeLibrary("bulletjme", true);
128124
}
129-
130-
NativeLibraryLoader.loadNativeLibrary("glfw-lwjgl3", true);
131-
NativeLibraryLoader.loadNativeLibrary("jemalloc-lwjgl3", true);
132-
NativeLibraryLoader.loadNativeLibrary("lwjgl3", true);
133125
}
134126

135127
/**

0 commit comments

Comments
 (0)