From: Fan WenJie fanwj@mail.ustc.edu.cn
--- dlls/winex11.drv/opengl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index aadc0b99cd1..21c0e1b3e9d 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -1343,7 +1343,7 @@ static struct gl_drawable *create_gl_drawable( HWND hwnd, const struct wgl_pixel if (gl->window) { gl->drawable = pglXCreateWindow( gdi_display, gl->format->fbconfig, gl->window, NULL ); - pXCompositeRedirectWindow( gdi_display, gl->window, CompositeRedirectManual ); + pXCompositeRedirectWindow( gdi_display, gl->window, CompositeRedirectAutomatic ); } TRACE( "%p created child %lx drawable %lx\n", hwnd, gl->window, gl->drawable ); }
I think the effect of this patch is just that it effectively breaks opengl child window clipping (meaning fixes that for some cases for d3d on opengl but breaking opengl behaviour).
That was analyzed and described in related Wine bugs that the key problem here is that exclusive fullscreen mode in d3d which, roughly, implies presenting over any child window and gdi drawing. The problem is known but it was unknown how to properly fix it in general. At very least that probably requires Wine specific GL extension to enable such mode of presentation. Then maybe it is possible to do by disabling redirect in that case and having GL client window onscreen and on top, but IIRC maybe there were some caveats with that.
Note that for non-exclusive fullscreen mode this patch will probably break d3d drawing in child windows as well.