Chris Robinson <[EMAIL PROTECTED]> 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. -- Alexandre Julliard [EMAIL PROTECTED]