Commit 14ec499d authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

winex11: Restore the X11DRV_FLUSH_GL_DRAWABLE XFlush() for setups without OML_sync_control.

This was removed in e75bc622, but appears to mitigate lack of OML_sync_control in at least some setups. Signed-off-by: 's avatarHenri Verbeet <hverbeet@codeweavers.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent 549934ee
...@@ -259,6 +259,7 @@ static INT X11DRV_ExtEscape( PHYSDEV dev, INT escape, INT in_count, LPCVOID in_d ...@@ -259,6 +259,7 @@ static INT X11DRV_ExtEscape( PHYSDEV dev, INT escape, INT in_count, LPCVOID in_d
RECT rect = physDev->dc_rect; RECT rect = physDev->dc_rect;
OffsetRect( &rect, -physDev->dc_rect.left, -physDev->dc_rect.top ); OffsetRect( &rect, -physDev->dc_rect.left, -physDev->dc_rect.top );
if (data->flush) XFlush( gdi_display );
XSetFunction( gdi_display, physDev->gc, GXcopy ); XSetFunction( gdi_display, physDev->gc, GXcopy );
XCopyArea( gdi_display, data->gl_drawable, physDev->drawable, physDev->gc, XCopyArea( gdi_display, data->gl_drawable, physDev->drawable, physDev->gc,
0, 0, rect.right, rect.bottom, 0, 0, rect.right, rect.bottom,
......
...@@ -1976,6 +1976,7 @@ static void wglFinish(void) ...@@ -1976,6 +1976,7 @@ static void wglFinish(void)
escape.code = X11DRV_FLUSH_GL_DRAWABLE; escape.code = X11DRV_FLUSH_GL_DRAWABLE;
escape.gl_drawable = 0; escape.gl_drawable = 0;
escape.flush = FALSE;
if ((gl = get_gl_drawable( WindowFromDC( ctx->hdc ), 0 ))) if ((gl = get_gl_drawable( WindowFromDC( ctx->hdc ), 0 )))
{ {
...@@ -2001,6 +2002,7 @@ static void wglFlush(void) ...@@ -2001,6 +2002,7 @@ static void wglFlush(void)
escape.code = X11DRV_FLUSH_GL_DRAWABLE; escape.code = X11DRV_FLUSH_GL_DRAWABLE;
escape.gl_drawable = 0; escape.gl_drawable = 0;
escape.flush = FALSE;
if ((gl = get_gl_drawable( WindowFromDC( ctx->hdc ), 0 ))) if ((gl = get_gl_drawable( WindowFromDC( ctx->hdc ), 0 )))
{ {
...@@ -3286,6 +3288,7 @@ static BOOL glxdrv_wglSwapBuffers( HDC hdc ) ...@@ -3286,6 +3288,7 @@ static BOOL glxdrv_wglSwapBuffers( HDC hdc )
escape.code = X11DRV_FLUSH_GL_DRAWABLE; escape.code = X11DRV_FLUSH_GL_DRAWABLE;
escape.gl_drawable = 0; escape.gl_drawable = 0;
escape.flush = !pglXWaitForSbcOML;
if (!(gl = get_gl_drawable( WindowFromDC( hdc ), hdc ))) if (!(gl = get_gl_drawable( WindowFromDC( hdc ), hdc )))
{ {
......
...@@ -304,6 +304,7 @@ struct x11drv_escape_flush_gl_drawable ...@@ -304,6 +304,7 @@ struct x11drv_escape_flush_gl_drawable
{ {
enum x11drv_escape_codes code; /* escape code (X11DRV_FLUSH_GL_DRAWABLE) */ enum x11drv_escape_codes code; /* escape code (X11DRV_FLUSH_GL_DRAWABLE) */
Drawable gl_drawable; /* GL drawable */ Drawable gl_drawable; /* GL drawable */
BOOL flush; /* flush X11 before copying */
}; };
/************************************************************************** /**************************************************************************
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment