bladecoder / bladecoder-adventure-engine

Classic point and click adventure game engine and editor
Apache License 2.0
603 stars 65 forks source link

LWJGL should be updated to support Wayland windowing system. #63

Open itaibh opened 2 years ago

itaibh commented 2 years ago

I installed adventure-editor on Ubuntu 22.10 with Wayland windowing system. It fails to run with this exception:

$ flatpak run com.bladecoder.adventure-editor
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.lwjgl.LWJGLUtil$3 (file:/app/lib/lwjgl-2.9.3.jar) to method java.lang.ClassLoader.findLibrary(java.lang.String)
WARNING: Please consider reporting this to the maintainers of org.lwjgl.LWJGLUtil$3
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Exception in thread "LWJGL Application" Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.getDisplayMode(LwjglGraphics.java:611)
    at com.bladecoder.engineeditor.Main.<init>(Main.java:72)
    at com.bladecoder.engineeditor.Main.main(Main.java:51)
Caused by: java.lang.RuntimeException: org.lwjgl.LWJGLException: Could not open X display connection
    at org.lwjgl.opengl.Display.<clinit>(Display.java:141)
    ... 3 more
Caused by: org.lwjgl.LWJGLException: Could not open X display connection
    at org.lwjgl.opengl.LinuxDisplay.openDisplay(Native Method)
    at org.lwjgl.opengl.LinuxDisplay.incDisplay(LinuxDisplay.java:305)
    at org.lwjgl.opengl.LinuxDisplay.internAtom(LinuxDisplay.java:629)
    at org.lwjgl.opengl.LinuxDisplay.init(LinuxDisplay.java:734)
    at org.lwjgl.opengl.Display.<clinit>(Display.java:138)
    ... 3 more
java.lang.NoClassDefFoundError: Could not initialize class org.lwjgl.opengl.Display
    at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setVSync(LwjglGraphics.java:643)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:125)

This tells me 2 things:

  1. The LWJGL version used is 2.9.3. Checking in the LWJGL website I found it under "legacy", with the latest version being 3.3.1 as of to writing this report.
  2. The setup is looking for the X windowing system. I am not familiar with LWJGL and don't know if legacy version 2.* supports EGW but according to this issue reported in LWJGL the latest version needs special handling to support EGL, so make sure to try to find out which one is the better to use.