gdkdisplay-win32.c: Don't retry WGL initialization

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.
This commit is contained in:
Chun-wei Fan 2021-09-17 17:08:23 +08:00
parent 218a3e3d01
commit ece02317b9

View File

@ -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 *