From 74a1003b1154ca11ad45ff649b6a7e7cbb7337de Mon Sep 17 00:00:00 2001 From: FyorDev Date: Thu, 9 Jul 2026 03:00:16 +0200 Subject: [PATCH] Fix Wine child window wglChoosePixelFormatARB not finding formats --- src/platform/win/gl.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/platform/win/gl.rs b/src/platform/win/gl.rs index 1dea04b6..3cc0585a 100644 --- a/src/platform/win/gl.rs +++ b/src/platform/win/gl.rs @@ -240,7 +240,24 @@ impl GlContextInner { ); } + // if no num_formats are found which happens in Wine for child windows, use fallback if num_formats == 0 { + let fallback_pfd = PIXELFORMATDESCRIPTOR { + nSize: std::mem::size_of::() as u16, + nVersion: 1, + dwFlags: PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, + iPixelType: PFD_TYPE_RGBA, + cColorBits: 32, + cAlphaBits: config.alpha_bits, + cDepthBits: config.depth_bits, + cStencilBits: config.stencil_bits, + iLayerType: PFD_MAIN_PLANE as u8, + ..std::mem::zeroed() + }; + pixel_format = ChoosePixelFormat(hdc, &fallback_pfd); + } + + if pixel_format == 0 { ReleaseDC(hwnd, hdc); return Err(GlError::CreationFailed(())); }