From 1c2b7fbf7f4239f24d4ce60ef7c8054f75a767c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joshua=20Vanda=C3=ABle?= Date: Sat, 25 Jul 2026 09:21:00 +0200 Subject: EGLX11: Forbid EGL_PLATFORM to be "wayland" --- Source/Core/Common/GL/GLInterface/EGLX11.cpp | 17 +++++++++++++++++ Source/Core/Common/GL/GLInterface/EGLX11.h | 1 + 2 files changed, 18 insertions(+) diff --git a/Source/Core/Common/GL/GLInterface/EGLX11.cpp b/Source/Core/Common/GL/GLInterface/EGLX11.cpp index f430898361..1795ddd2dd 100644 --- a/Source/Core/Common/GL/GLInterface/EGLX11.cpp +++ b/Source/Core/Common/GL/GLInterface/EGLX11.cpp @@ -3,6 +3,23 @@ #include "Common/GL/GLInterface/EGLX11.h" +#include + +#include "Common/StringUtil.h" + +GLContextEGLX11::GLContextEGLX11() +{ + // HACK: If EGL_PLATFORM is set to "wayland", Dolphin will still use GLContextEGLX11 due to our + // lack of proper Wayland support, and crash. + // Some distros have started aggressively setting that environment variable, bypassing the usual + // runtime detection. Thus, clear that environment variable if it forces wayland. + const char* current_egl_platform = getenv("EGL_PLATFORM"); + const bool replace_egl_platform = + current_egl_platform != nullptr && + Common::CaseInsensitiveContains(current_egl_platform, "wayland"); + setenv("EGL_PLATFORM", "", replace_egl_platform); +} + GLContextEGLX11::~GLContextEGLX11() { // The context must be destroyed before the window. diff --git a/Source/Core/Common/GL/GLInterface/EGLX11.h b/Source/Core/Common/GL/GLInterface/EGLX11.h index 6f30333341..03560d8581 100644 --- a/Source/Core/Common/GL/GLInterface/EGLX11.h +++ b/Source/Core/Common/GL/GLInterface/EGLX11.h @@ -11,6 +11,7 @@ class GLContextEGLX11 final : public GLContextEGL { public: + GLContextEGLX11(); ~GLContextEGLX11() override; void Update() override; -- cgit v1.2.3