Alexandre Julliard : gdi32: Avoid creating a copy of the pattern bits for the R2_COPYPEN case.
Alexandre Julliard
julliard at winehq.org
Thu Nov 29 14:15:45 CST 2012
Module: wine
Branch: master
Commit: a796ad5ed8d06c6ac2edb67242e00b646bf1e6ca
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a796ad5ed8d06c6ac2edb67242e00b646bf1e6ca
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Nov 29 17:59:59 2012 +0100
gdi32: Avoid creating a copy of the pattern bits for the R2_COPYPEN case.
---
dlls/gdi32/dibdrv/objects.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/dlls/gdi32/dibdrv/objects.c b/dlls/gdi32/dibdrv/objects.c
index b658af6..8dee8e8 100644
--- a/dlls/gdi32/dibdrv/objects.c
+++ b/dlls/gdi32/dibdrv/objects.c
@@ -1782,7 +1782,7 @@ static BOOL alloc_brush_mask_bits( dib_brush *brush )
static void free_brush_mask_bits( dib_brush *brush )
{
- HeapFree(GetProcessHeap(), 0, brush->masks.and);
+ if (brush->masks.xor != brush->dib.bits.ptr) HeapFree(GetProcessHeap(), 0, brush->masks.xor);
brush->masks.and = brush->masks.xor = NULL;
}
@@ -1798,6 +1798,12 @@ static BOOL create_pattern_brush_bits( dib_brush *brush )
DWORD *brush_bits = brush->dib.bits.ptr;
DWORD *and_bits, *xor_bits;
+ if (brush->rop == R2_COPYPEN)
+ {
+ brush->masks.xor = brush_bits; /* use the pattern bits directly */
+ return TRUE;
+ }
+
if (!alloc_brush_mask_bits( brush )) return FALSE;
and_bits = brush->masks.and;
More information about the wine-cvs
mailing list