winex11: Add support for performing GL calls on a top-level window DC.
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 6a5cc6f..e8535bc 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -1747,14 +1747,21 @@
escape.fbconfig_id = 0;
escape.gl_drawable = 0;
escape.pixmap = 0;
+ escape.gl_copy = FALSE;
if (top == hwnd && data && IsIconic( hwnd ) && data->icon_window)
{
escape.drawable = data->icon_window;
}
- else if (top == hwnd && (flags & DCX_WINDOW))
+ else if (top == hwnd)
{
- escape.drawable = data ? data->whole_window : X11DRV_get_whole_window( hwnd );
+ escape.fbconfig_id = data ? data->fbconfig_id : (XID)GetPropA( hwnd, fbconfig_id_prop );
+ /* GL draws to the client area even for window DCs */
+ escape.gl_drawable = data ? data->client_window : X11DRV_get_client_window( hwnd );
+ if (flags & DCX_WINDOW)
+ escape.drawable = data ? data->whole_window : X11DRV_get_whole_window( hwnd );
+ else
+ escape.drawable = escape.gl_drawable;
}
else
{
@@ -1762,6 +1769,7 @@
escape.fbconfig_id = data ? data->fbconfig_id : (XID)GetPropA( hwnd, fbconfig_id_prop );
escape.gl_drawable = data ? data->gl_drawable : (Drawable)GetPropA( hwnd, gl_drawable_prop );
escape.pixmap = data ? data->pixmap : (Pixmap)GetPropA( hwnd, pixmap_prop );
+ escape.gl_copy = (escape.gl_drawable != 0);
if (flags & DCX_CLIPCHILDREN) escape.mode = ClipByChildren;
}