Clarify/set condition: wayland && !wayland_egl

Check for the condition where the windowing system has wayland support
but not wayland EGL support for wxGLCanvas in wx, in which case the
Simple renderer must be forced.

This is currently how the wx packages are built on Fedora.

Refer #1028

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
This commit is contained in:
Rafael Kitover 2022-12-28 18:27:04 +00:00
parent 8e4acfc91d
commit ab4ae96e05
No known key found for this signature in database
GPG Key ID: 08AB596679D86240
3 changed files with 9 additions and 3 deletions

View File

@ -294,7 +294,7 @@ DisplayConfig::DisplayConfig(wxWindow* parent)
#ifdef NO_OGL #ifdef NO_OGL
GetValidatedChild(this, "OutputOpenGL")->Hide(); GetValidatedChild(this, "OutputOpenGL")->Hide();
#elif defined(__WXGTK__) && !wxCHECK_VERSION(3, 2, 0) #elif defined(HAVE_WAYLAND_SUPPORT) && !defined(HAVE_WAYLAND_EGL)
// wxGLCanvas segfaults on Wayland before wx 3.2. // wxGLCanvas segfaults on Wayland before wx 3.2.
if (IsWayland()) { if (IsWayland()) {
GetValidatedChild(this, "OutputOpenGL")->Hide(); GetValidatedChild(this, "OutputOpenGL")->Hide();

View File

@ -21,8 +21,14 @@ constexpr bool IsWayland() { return false; }
#endif // wayland #endif // wayland
#if defined(__WXGTK__) && defined(HAVE_EGL) && wxCHECK_VERSION(3, 2, 0) && wxUSE_GLCANVAS_EGL
#define HAVE_WAYLAND_EGL
#endif
// Temporary hack to backport 800d6ed69b from wxWidgets until 3.2.2 is released. // Temporary hack to backport 800d6ed69b from wxWidgets until 3.2.2 is released.
#if defined(__WXGTK__) && defined(HAVE_EGL) && wxCHECK_VERSION(3, 2, 0) && !wxCHECK_VERSION(3, 2, 2) && wxUSE_GLCANVAS_EGL #if defined(HAVE_WAYLAND_EGL) && !wxCHECK_VERSION(3, 2, 2)
#define WAYLAND_MOVE_SUBSURFACE_BACKPORT #define WAYLAND_MOVE_SUBSURFACE_BACKPORT

View File

@ -359,7 +359,7 @@ bool wxvbamApp::OnInit() {
load_opts(); load_opts();
// wxGLCanvas segfaults under wayland before wx 3.2 // wxGLCanvas segfaults under wayland before wx 3.2
#if defined(__WXGTK__) && !wxCHECK_VERSION(3, 2, 0) #if defined(HAVE_WAYLAND_SUPPORT) && !defined(HAVE_WAYLAND_EGL)
if (UsingWayland()) { if (UsingWayland()) {
config::OptDispRenderMethod()->SetRenderMethod( config::OptDispRenderMethod()->SetRenderMethod(
config::RenderMethod::kSimple); config::RenderMethod::kSimple);