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;
     }