Chris Robinson chris.kcat@gmail.com writes:
- if(w > 0 && h > 0) {
XFlush(gdi_display);
XCopyArea(gdi_display, physDev->gl_drawable, physDev->drawable,
physDev->gc, 0, 0, w, h, physDev->dc_rect.left,
physDev->dc_rect.top);
Why do you need an XFlush here?
- if(data->whole_window && vis->visualid == XVisualIDFromVisual(visual))
- {
TRACE("Whole window available and visual match, rendering onscreen\n");
goto done;
- }
- if(!composite_gl)
goto done;
There's no sense in having a config option for this since the alternative doesn't work anyway, particularly since you removed the scissor support.
data->gl_drawable = XCreateWindow(gdi_display, root_window, -w, 0, w, h,
0, vis->depth, InputOutput,
vis->visual,
CWColormap | CWOverrideRedirect,
&attrib);
The window needs to be created on the thread display, and as a child of the main window.
+static void update_gl_drawable(struct x11drv_win_data *data) +{
- unsigned int border, depth;
- int x, y, w, h;
- Window root_win;
- if(!data->gl_drawable)
return;
- wine_tsx11_lock();
- XGetGeometry(gdi_display, data->gl_drawable, &root_win, &x, &y,
(unsigned int*)&w, (unsigned int*)&h, &border, &depth);
You must not use XGetGeometry, this incurs a server round-trip.