summary refs log tree commit diff
path: root/src/Render.cpp
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2024-04-17 00:12:56 +0200
committerMel <einebeere@gmail.com>2024-04-17 00:12:56 +0200
commit3ae8e66ee7c2c488dfe3c32457a26822eba8b236 (patch)
treeee415e3b102de2f5c6d5bef7ae805006bae5c5e0 /src/Render.cpp
parent97c6939a26b3d4dcac843030aa9911aff6b2e5f6 (diff)
downloadmeowcraft-3ae8e66ee7c2c488dfe3c32457a26822eba8b236.tar.zst
meowcraft-3ae8e66ee7c2c488dfe3c32457a26822eba8b236.zip
Hack to fix GLEW EGL/GLX confusion error
Diffstat (limited to 'src/Render.cpp')
-rw-r--r--src/Render.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/Render.cpp b/src/Render.cpp
index c4ed147..1089ad4 100644
--- a/src/Render.cpp
+++ b/src/Render.cpp
@@ -110,9 +110,17 @@ void Render::render_scene(Scene const& scene, GFX::Texture const& texture) const
 
 void Render::setup_gl() {
     GLenum error = glewInit();
-    if (error != GLEW_OK) {
-        std::string error_string(reinterpret_cast<Char const*>(glewGetErrorString(error)));
-        throw std::runtime_error("Failed to load GL functions: " + error_string);
+
+    // We get a NO_GLX_DISPLAY error on Linux/Wayland during GLEW initialization.
+    // Since we're not using GLX (under Wayland), it is presumably fine to ignore this error,
+    // and it seems to appear due to some sort of confusion in GLEW when to use GLX or EGL.
+    // See this GLEW issue: https://github.com/nigels-com/glew/issues/273
+    if (error != GLEW_OK && error != GLEW_ERROR_NO_GLX_DISPLAY) {
+        Char error_code[8];
+        snprintf(error_code, sizeof(error_code), "%X", error);
+
+        std::string error_string { reinterpret_cast<Char const *>(glewGetErrorString(error)) };
+        throw std::runtime_error("Failed to load GL functions: " + error_string + " (0x" + error_code + ")");
     }
 }