winex11.drv: Add an optimized path for BitBlt(SRCINVERT).

This commit is contained in:
Dmitry Timoshkov 2008-02-21 18:24:48 +08:00 committed by Alexandre Julliard
parent 1cfdeb0e0a
commit ae8457e431
1 changed files with 3 additions and 2 deletions

View File

@ -1390,10 +1390,11 @@ static BOOL BITBLT_InternalStretchBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT
return TRUE; return TRUE;
case SRCCOPY: /* 0xcc */ case SRCCOPY: /* 0xcc */
case SRCINVERT:
if (physDevSrc->depth == physDevDst->depth) if (physDevSrc->depth == physDevDst->depth)
{ {
wine_tsx11_lock(); wine_tsx11_lock();
XSetFunction( gdi_display, physDevDst->gc, GXcopy ); XSetFunction( gdi_display, physDevDst->gc, rop == SRCCOPY ? GXcopy : GXxor );
XCopyArea( gdi_display, physDevSrc->drawable, XCopyArea( gdi_display, physDevSrc->drawable,
physDevDst->drawable, physDevDst->gc, physDevDst->drawable, physDevDst->gc,
physDevSrc->dc_rect.left + visRectSrc.left, physDevSrc->dc_rect.left + visRectSrc.left,
@ -1414,7 +1415,7 @@ static BOOL BITBLT_InternalStretchBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT
XSetBackground( gdi_display, physDevDst->gc, fg ); XSetBackground( gdi_display, physDevDst->gc, fg );
XSetForeground( gdi_display, physDevDst->gc, bg ); XSetForeground( gdi_display, physDevDst->gc, bg );
XSetFunction( gdi_display, physDevDst->gc, GXcopy ); XSetFunction( gdi_display, physDevDst->gc, rop == SRCCOPY ? GXcopy : GXxor );
XCopyPlane( gdi_display, physDevSrc->drawable, XCopyPlane( gdi_display, physDevSrc->drawable,
physDevDst->drawable, physDevDst->gc, physDevDst->drawable, physDevDst->gc,
physDevSrc->dc_rect.left + visRectSrc.left, physDevSrc->dc_rect.left + visRectSrc.left,