Skip to content

Commit

Permalink
Downgrade LWJGL to 3.3.3, NFD to 3.3.1 .
Browse files Browse the repository at this point in the history
Completes #216 .

Because Liftoff 1.13.0.2 worked and it used these versions (and Liftoff had used them without many issues for a long time), I can be fairly confident these will work. They do work on Windows.
  • Loading branch information
tommyettinger committed Jan 13, 2025
1 parent fcd69a8 commit e993f93
Show file tree
Hide file tree
Showing 7 changed files with 95 additions and 94 deletions.
7 changes: 6 additions & 1 deletion Guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,12 @@ used to avoid vulnerable log4j versions, now that Gradle has updated and conside
LWJGL 3.3.4 and 3.3.5 were problematic for a variety of reasons, and if you choose to update LWJGL to a different version
than what Liftoff generates (currently LWJGL 3.3.3 for any project using libGDX 1.12.1 or 1.13.1), you should use 3.3.6
and be aware that it has some problems with heavy audio over-logging on macOS. Disabling audio in Lwjgl3Launcher should
prevent the logging issue, if you have no audio to begin with. That's what Liftoff 1.13.1.0 does.
prevent the logging issue, if you have no audio to begin with. Otherwise, you can set an environment variable,
`ALSOFT_LOGLEVEL=0`, to disable audio logging entirely while keeping sounds and music in your game. This only would need
to be set on macOS, and might be possible to do by editing StartupHelper, but that isn't exactly supported. Using LWJGL3
3.3.3 is generally a good option. Some other LWJGL3 modules have issues in a variety of versions, such as NFD (which
Liftoff uses) for native file dialogs. That module needs to be downgraded to 3.3.1 to work at all; you can see how that
can be done in Liftoff's Gradle files and sources.

## Usage

Expand Down
160 changes: 80 additions & 80 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -85,88 +85,88 @@ dependencies {
exclude group: "org.jcraft", module: "jorbis"
exclude group: "org.lwjgl", module: "lwjgl-openal"

exclude group: 'org.lwjgl', module: 'lwjgl-glfw'
exclude group: 'org.lwjgl', module: 'lwjgl-opengl'
exclude group: 'org.lwjgl', module: 'lwjgl-stb'
exclude group: 'org.lwjgl', module: 'lwjgl'
exclude group: 'org.lwjgl', module: 'lwjgl-jemalloc'
// exclude group: 'org.lwjgl', module: 'lwjgl-glfw'
// exclude group: 'org.lwjgl', module: 'lwjgl-opengl'
// exclude group: 'org.lwjgl', module: 'lwjgl-stb'
// exclude group: 'org.lwjgl', module: 'lwjgl'
// exclude group: 'org.lwjgl', module: 'lwjgl-jemalloc'
}

implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version"
implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version"
implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version"
implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version"
implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version"
implementation "org.lwjgl:lwjgl:$lwjgl3Version"
// Linux //
implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-linux"
implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-linux-arm32"
implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-linux-arm64"
implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-linux"
implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-linux-arm32"
implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-linux-arm64"
implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-linux"
implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-linux-arm32"
implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-linux-arm64"
implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-linux"
implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-linux-arm32"
implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-linux-arm64"
implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-linux"
implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-linux-arm32"
implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-linux-arm64"
implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-linux"
implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-linux-arm32"
implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-linux-arm64"

// MacOS //

implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-macos"
implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-macos-arm64"
implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-macos"
implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-macos-arm64"
implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-macos"
implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-macos-arm64"
implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-macos"
implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-macos-arm64"
implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-macos"
implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-macos-arm64"
implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-macos"
implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-macos-arm64"


// Windows //

implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-windows"
implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-windows"
implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-windows"
implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-windows"
implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-windows"
implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-windows"
implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-windows-x86"
implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-windows-x86"
implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-windows-x86"
implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-windows-x86"
implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-windows-x86"
implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-windows-x86"

implementation "org.lwjgl:lwjgl-nfd:$nfdVersion"
implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-windows"
implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-windows-x86"
implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-linux"
implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-linux-arm32"
implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-linux-arm64"
implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-macos"
implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-macos-arm64"


// implementation("org.lwjgl:lwjgl-nfd:$nfdVersion"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
// implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-windows"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
// implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-windows-x86"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
// implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-linux"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
// implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-linux-arm32"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
// implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-linux-arm64"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
// implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-macos"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
// implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-macos-arm64"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
// implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version"
// implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version"
// implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version"
// implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version"
// implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version"
// implementation "org.lwjgl:lwjgl:$lwjgl3Version"
//// Linux //
// implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-linux"
// implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-linux-arm32"
// implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-linux-arm64"
// implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-linux"
// implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-linux-arm32"
// implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-linux-arm64"
// implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-linux"
// implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-linux-arm32"
// implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-linux-arm64"
// implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-linux"
// implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-linux-arm32"
// implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-linux-arm64"
// implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-linux"
// implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-linux-arm32"
// implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-linux-arm64"
// implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-linux"
// implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-linux-arm32"
// implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-linux-arm64"
//
// // MacOS //
//
// implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-macos"
// implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-macos-arm64"
// implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-macos"
// implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-macos-arm64"
// implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-macos"
// implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-macos-arm64"
// implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-macos"
// implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-macos-arm64"
// implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-macos"
// implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-macos-arm64"
// implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-macos"
// implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-macos-arm64"
//
//
// // Windows //
//
// implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-windows"
// implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-windows"
// implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-windows"
// implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-windows"
// implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-windows"
// implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-windows"
// implementation "org.lwjgl:lwjgl-jemalloc:$lwjgl3Version:natives-windows-x86"
// implementation "org.lwjgl:lwjgl-glfw:$lwjgl3Version:natives-windows-x86"
// implementation "org.lwjgl:lwjgl-openal:$lwjgl3Version:natives-windows-x86"
// implementation "org.lwjgl:lwjgl-opengl:$lwjgl3Version:natives-windows-x86"
// implementation "org.lwjgl:lwjgl-stb:$lwjgl3Version:natives-windows-x86"
// implementation "org.lwjgl:lwjgl:$lwjgl3Version:natives-windows-x86"
//
// implementation "org.lwjgl:lwjgl-nfd:$nfdVersion"
// implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-windows"
// implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-windows-x86"
// implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-linux"
// implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-linux-arm32"
// implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-linux-arm64"
// implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-macos"
// implementation "org.lwjgl:lwjgl-nfd:$nfdVersion:natives-macos-arm64"


implementation("org.lwjgl:lwjgl-nfd:$nfdVersion"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-windows"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-windows-x86"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-linux"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-linux-arm32"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-linux-arm64"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-macos"){ exclude group: 'org.lwjgl', module: 'lwjgl' }
implementation("org.lwjgl:lwjgl-nfd:$nfdVersion:natives-macos-arm64"){ exclude group: 'org.lwjgl', module: 'lwjgl' }


// necessary because the current gdx-autumn-desktop-fcs has an implementation dep on this, and we need it here.
Expand Down
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
org.gradle.daemon=false
org.gradle.jvmargs=-Xms512M -Xmx1G -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8
liftoffVersion=1.13.1.0
liftoffVersion=1.13.1.1-SNAPSHOT
kotlinVersion=2.1.0
gdxVersion=1.13.1
lmlVersion=1.10.1.12.1
#visUiVersion=1.5.3
visUiVersion=1aef382077
commonsExecVersion=1.3
lwjgl3Version=3.3.6
nfdVersion=3.3.6
lwjgl3Version=3.3.3
nfdVersion=3.3.1
iconizerVersion=0.1.0
6 changes: 2 additions & 4 deletions src/main/java/gdx/liftoff/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -431,11 +431,10 @@ public static void pickDirectory(FileHandle initialFolder, FileChooserAdapter ca
initialPath = initialPath.replace("/", "\\");
}

NativeFileDialog.NFD_Init();
PointerBuffer pathPointer = memAllocPointer(1);

try {
int status = NativeFileDialog.NFD_PickFolder(pathPointer, initialPath);
int status = NativeFileDialog.NFD_PickFolder(initialPath, pathPointer);

if (status == NativeFileDialog.NFD_CANCEL) {
callback.canceled();
Expand All @@ -448,7 +447,7 @@ public static void pickDirectory(FileHandle initialFolder, FileChooserAdapter ca
}

String folder = pathPointer.getStringUTF8(0);
NativeFileDialog.nNFD_FreePath(pathPointer.get(0));
NativeFileDialog.nNFD_Free(pathPointer.get(0));

Array<FileHandle> array = new Array<>();
array.add(Gdx.files.absolute(folder));
Expand All @@ -469,7 +468,6 @@ public static void pickDirectory(FileHandle initialFolder, FileChooserAdapter ca

stage.addActor(fileChooser.fadeIn());
} finally {
NativeFileDialog.NFD_Quit();
memFree(pathPointer);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/gdx/liftoff/config/Configuration.kt
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import gdx.liftoff.views.widgets.ScrollableTextArea
@Suppress("unused") // Fields accessed via reflection.
class Configuration {
companion object {
const val VERSION = "1.13.1.0"
const val VERSION = "1.13.1.1-SNAPSHOT"
const val WIDTH = 600
const val HEIGHT = 700
const val PREFERENCES_PATH = "gdx-liftoff-prefs"
Expand Down
6 changes: 2 additions & 4 deletions src/main/kotlin/gdx/liftoff/views/MainView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -125,11 +125,10 @@ class MainView : ActionContainer {
initialPath = initialPath.replace("/", "\\")
}

NativeFileDialog.NFD_Init()
val pathPointer = memAllocPointer(1)

try {
val status = NativeFileDialog.NFD_PickFolder(pathPointer, initialPath)
val status = NativeFileDialog.NFD_PickFolder(initialPath, pathPointer)

if (status == NativeFileDialog.NFD_CANCEL) {
callback.canceled()
Expand All @@ -142,7 +141,7 @@ class MainView : ActionContainer {
}

val folder = pathPointer.getStringUTF8(0)
NativeFileDialog.nNFD_FreePath(pathPointer.get(0))
NativeFileDialog.nNFD_Free(pathPointer.get(0))

val array = GdxArray<FileHandle>()
array.add(Gdx.files.absolute(folder))
Expand All @@ -163,7 +162,6 @@ class MainView : ActionContainer {

form.stage.addActor(fileChooser.fadeIn())
} finally {
NativeFileDialog.NFD_Quit()
memFree(pathPointer)
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/ui-data/defaults.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
liftoffVersion=1.13.1.0
liftoffVersion=1.13.1.1-SNAPSHOT
projectNameDefault=YourProjectName
packageNameDefault=io.github.some_example_name
mainClassNameDefault=Main
Expand Down

0 comments on commit e993f93

Please sign in to comment.