mirror of
https://github.com/glfw/glfw.git
synced 2025-10-24 17:12:27 +00:00
WGL: Fix pixel format count in a Parallels VM
In a Parallels VM wglGetPixelFormatAttribivARB returns fewer pixel formats than DescribePixelFormat. This broke context creation on Windows in Parallels since the changes in2c0f34b60f. The previous version of the code worked accidentally. This adds a workaround by iterating through the minimum of both counts. It should have no effect when running on conforming implementations. Tested on Parallels by @ dougbinks. Closes #2191 Fixes #2406 Fixes #2467 This was adapted to 3.3-stable from00e86d4b73.
This commit is contained in:
parent
ae44e10b33
commit
bc788a9333
@ -45,6 +45,7 @@ video tutorials.
|
||||
- Bailey Cosier
|
||||
- Noel Cower
|
||||
- CuriouserThing
|
||||
- Bill Currie
|
||||
- Jason Daly
|
||||
- danhambleton
|
||||
- Jarrod Davis
|
||||
@ -162,6 +163,7 @@ video tutorials.
|
||||
- Martins Mozeiko
|
||||
- James Murphy
|
||||
- Julian Møller
|
||||
- NateIsStalling
|
||||
- ndogxj
|
||||
- F. Nedelec
|
||||
- Kristian Nielsen
|
||||
|
||||
@ -128,6 +128,7 @@ information on what to include when reporting a bug.
|
||||
- [Wayland] Bugfix: Terminating the library before showing a window could segfault
|
||||
- [Wayland] Bugfix: Compilation failed on FreeBSD (#2445)
|
||||
- [Linux] Bugfix: `regfree´ was called on invalid data (#2464)
|
||||
- [WGL] Bugfix: Context creation failed in Parallels VM (#2191,#2406,#2467)
|
||||
|
||||
|
||||
## Contact
|
||||
|
||||
@ -80,6 +80,23 @@ static int choosePixelFormat(_GLFWwindow* window,
|
||||
|
||||
if (_glfw.wgl.ARB_pixel_format)
|
||||
{
|
||||
// NOTE: In a Parallels VM WGL_ARB_pixel_format returns fewer pixel formats than
|
||||
// DescribePixelFormat, violating the guarantees of the extension spec
|
||||
// HACK: Iterate through the minimum of both counts
|
||||
|
||||
const int attrib = WGL_NUMBER_PIXEL_FORMATS_ARB;
|
||||
int extensionCount;
|
||||
|
||||
if (!wglGetPixelFormatAttribivARB(window->context.wgl.dc,
|
||||
1, 0, 1, &attrib, &extensionCount))
|
||||
{
|
||||
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
||||
"WGL: Failed to retrieve pixel format attribute");
|
||||
return 0;
|
||||
}
|
||||
|
||||
nativeCount = _glfw_min(nativeCount, extensionCount);
|
||||
|
||||
addAttrib(WGL_SUPPORT_OPENGL_ARB);
|
||||
addAttrib(WGL_DRAW_TO_WINDOW_ARB);
|
||||
addAttrib(WGL_PIXEL_TYPE_ARB);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user