summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2021-09-17 17:08:23 +0800
committerChun-wei Fan <fanchunwei@src.gnome.org>2021-09-22 11:09:02 +0800
commitece02317b9268d407609826427a7e2d885c37a6b (patch)
treef85834e91cbea56855c63291c264a318110a76d0
parent218a3e3d010a1705372f1b2360ea57c51384e5ba (diff)
downloadgtk+-ece02317b9268d407609826427a7e2d885c37a6b.tar.gz
gdkdisplay-win32.c: Don't retry WGL initializationfix-wgl-cairo-fallback
On Windows, GLES is not that widely available unless one installs wrapper libraries such as libANGLE, so GLES/EGL support on Windows is used more like a fallback mode if Desktop OpenGL (WGL) support is inadequate on the system. Hence, unless one forces WGL or EGL, we will first try to initialize WGL, and then try to initialize GLES if enabled and if WGL initialization failed, and then just return whatever the last result we can obtain from these initialization attempts, since unlike X11 EGL contexts, we do not have separate modes for WGL except for legacy and non-legacy contexts.
-rw-r--r--gdk/win32/gdkdisplay-win32.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/gdk/win32/gdkdisplay-win32.c b/gdk/win32/gdkdisplay-win32.c
index 84d99b78a6..cffd85d432 100644
--- a/gdk/win32/gdkdisplay-win32.c
+++ b/gdk/win32/gdkdisplay-win32.c
@@ -1150,6 +1150,8 @@ static gboolean
gdk_win32_display_init_gl_backend (GdkDisplay *display,
GError **error)
{
+ gboolean result = FALSE;
+
#ifdef GDK_WIN32_ENABLE_EGL
if (GDK_DISPLAY_DEBUG_CHECK (display, GL_EGL))
return gdk_win32_display_init_egl (display, error);
@@ -1161,17 +1163,17 @@ gdk_win32_display_init_gl_backend (GdkDisplay *display,
* as WGL is the more tried-and-tested configuration.
*/
- if (gdk_win32_display_init_wgl (display, error))
- return TRUE;
- g_clear_error (error);
+ result = gdk_win32_display_init_wgl (display, error);
#ifdef GDK_WIN32_ENABLE_EGL
- if (gdk_win32_display_init_egl (display, error))
- return TRUE;
+ if (!result)
+ {
+ g_clear_error (error);
+ result = gdk_win32_display_init_egl (display, error);
+ }
#endif
- g_clear_error (error);
- return gdk_win32_display_init_wgl (display, error);
+ return result;
}
static GdkGLContext *