diff --git a/gdk/win32/gdkglcontext-win32.c b/gdk/win32/gdkglcontext-win32.c index c7e7fa3345..610711d3b8 100644 --- a/gdk/win32/gdkglcontext-win32.c +++ b/gdk/win32/gdkglcontext-win32.c @@ -712,20 +712,30 @@ _set_pixformat_for_hdc (HDC hdc, int *best_idx, GdkWin32Display *display) { - PIXELFORMATDESCRIPTOR pfd; - gboolean set_pixel_format_result = FALSE; + gboolean already_checked = TRUE; + *best_idx = GetPixelFormat (hdc); /* one is only allowed to call SetPixelFormat(), and so ChoosePixelFormat() * one single time per window HDC */ - *best_idx = _get_wgl_pfd (hdc, &pfd, display); + if (*best_idx == 0) + { + PIXELFORMATDESCRIPTOR pfd; + gboolean set_pixel_format_result = FALSE; - if (*best_idx != 0) - set_pixel_format_result = SetPixelFormat (hdc, *best_idx, &pfd); + GDK_NOTE (OPENGL, g_print ("requesting pixel format...\n")); + already_checked = FALSE; + *best_idx = _get_wgl_pfd (hdc, &pfd, display); - /* ChoosePixelFormat() or SetPixelFormat() failed, bail out */ - if (*best_idx == 0 || !set_pixel_format_result) - return FALSE; + if (*best_idx != 0) + set_pixel_format_result = SetPixelFormat (hdc, *best_idx, &pfd); + + /* ChoosePixelFormat() or SetPixelFormat() failed, bail out */ + if (*best_idx == 0 || !set_pixel_format_result) + return FALSE; + } + + GDK_NOTE (OPENGL, g_print ("%s""requested and set pixel format: %d\n", already_checked ? "already " : "", *best_idx)); return TRUE; }