gdkglcontext-win32-wgl.c: Fix Cairo fallback check
authorChun-wei Fan <fanchunwei@src.gnome.org>
Fri, 17 Sep 2021 03:09:23 +0000 (11:09 +0800)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Fri, 17 Sep 2021 03:19:30 +0000 (11:19 +0800)
We were setting the WGL pixel format in GdkWin32Display too early, so the code
does not bail out correctly when we retry establishing the WGL context.

Fix this by pushing back setting the WGL pixel format only after it passes the
shader availability check.

Should fix issue #4257.

gdk/win32/gdkglcontext-win32-wgl.c

index 3d05fb8907d97286f31e44e3bea521262f46da65..010436bd3eae3a80175c081d50de5f3295541e31 100644 (file)
@@ -288,7 +288,6 @@ gdk_win32_display_init_wgl (GdkDisplay  *display,
       return FALSE;
     }
 
-  display_win32->wgl_pixel_format = best_idx;
   display_win32->gl_version = epoxy_gl_version ();
 
   /* We must have OpenGL/WGL 2.0 or later, or have the GL_ARB_shader_objects extension */
@@ -307,6 +306,8 @@ gdk_win32_display_init_wgl (GdkDisplay  *display,
         }
     }
 
+  display_win32->wgl_pixel_format = best_idx;
+
   display_win32->hasWglARBCreateContext =
     epoxy_has_wgl_extension (hdc, "WGL_ARB_create_context");
   display_win32->hasWglEXTSwapControl =