Alexandre Julliard : gdi32: Return the original brush data in GetObject.

Alexandre Julliard julliard at winehq.org
Tue Nov 8 12:23:08 CST 2011


Module: wine
Branch: master
Commit: b47debddf533db275d19dbad9b230a283cef1cd8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b47debddf533db275d19dbad9b230a283cef1cd8

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Nov  3 20:18:59 2011 +0100

gdi32: Return the original brush data in GetObject.

---

 dlls/gdi32/brush.c       |    5 ++---
 dlls/gdi32/tests/brush.c |   16 ++++++++--------
 2 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/dlls/gdi32/brush.c b/dlls/gdi32/brush.c
index 19372d1..5cbae61 100644
--- a/dlls/gdi32/brush.c
+++ b/dlls/gdi32/brush.c
@@ -161,7 +161,6 @@ HBRUSH WINAPI CreateBrushIndirect( const LOGBRUSH * brush )
     case BS_PATTERN:
         ptr->bitmap = BITMAP_CopyBitmap( (HBITMAP)ptr->logbrush.lbHatch );
         if (!ptr->bitmap) goto error;
-        ptr->logbrush.lbHatch = (ULONG_PTR)ptr->bitmap;
         ptr->logbrush.lbColor = 0;
         break;
 
@@ -176,7 +175,7 @@ HBRUSH WINAPI CreateBrushIndirect( const LOGBRUSH * brush )
         if (!ptr->info) goto error;
         ptr->bits.ptr = (char *)ptr->info + bitmap_info_size( ptr->info, ptr->usage );
         ptr->logbrush.lbStyle = BS_DIBPATTERN;
-        ptr->logbrush.lbHatch = (ULONG_PTR)ptr->info;
+        ptr->logbrush.lbColor = 0;
         break;
 
     case BS_DIBPATTERN8X8:
@@ -446,7 +445,7 @@ static HGDIOBJ BRUSH_SelectObject( HGDIOBJ handle, HDC hdc )
             if(pattern_dev == dc->dibdrv)
                 pattern_dev = GET_NEXT_PHYSDEV( physdev, pSelectBrush );
 
-            BITMAP_SetOwnerDC( (HBITMAP)brush->logbrush.lbHatch, pattern_dev );
+            BITMAP_SetOwnerDC( bitmap, pattern_dev );
         }
 
         info   = brush->info;
diff --git a/dlls/gdi32/tests/brush.c b/dlls/gdi32/tests/brush.c
index a02209f..f0ef2df 100644
--- a/dlls/gdi32/tests/brush.c
+++ b/dlls/gdi32/tests/brush.c
@@ -100,7 +100,7 @@ static void test_pattern_brush(void)
     ok( ret == sizeof(br), "wrong size %u\n", ret );
     ok( br.lbStyle == BS_PATTERN, "wrong style %u\n", br.lbStyle );
     ok( br.lbColor == 0, "wrong color %u\n", br.lbColor );
-    todo_wine ok( (HBITMAP)br.lbHatch == bitmap, "wrong handle %p/%p\n", (HBITMAP)br.lbHatch, bitmap );
+    ok( (HBITMAP)br.lbHatch == bitmap, "wrong handle %p/%p\n", (HBITMAP)br.lbHatch, bitmap );
     DeleteObject( brush );
 
     br.lbStyle = BS_PATTERN8X8;
@@ -113,7 +113,7 @@ static void test_pattern_brush(void)
     ok( ret == sizeof(br), "wrong size %u\n", ret );
     ok( br.lbStyle == BS_PATTERN, "wrong style %u\n", br.lbStyle );
     ok( br.lbColor == 0, "wrong color %u\n", br.lbColor );
-    todo_wine ok( (HBITMAP)br.lbHatch == bitmap, "wrong handle %p/%p\n", (HBITMAP)br.lbHatch, bitmap );
+    ok( (HBITMAP)br.lbHatch == bitmap, "wrong handle %p/%p\n", (HBITMAP)br.lbHatch, bitmap );
     ret = GetObjectW( bitmap, sizeof(dib), &dib );
     ok( ret == sizeof(dib.dsBm), "wrong size %u\n", ret );
     DeleteObject( bitmap );
@@ -139,7 +139,7 @@ static void test_pattern_brush(void)
     ok( ret == sizeof(br), "wrong size %u\n", ret );
     ok( br.lbStyle == BS_PATTERN, "wrong style %u\n", br.lbStyle );
     ok( br.lbColor == 0, "wrong color %u\n", br.lbColor );
-    todo_wine ok( (HBITMAP)br.lbHatch == bitmap, "wrong handle %p/%p\n", (HBITMAP)br.lbHatch, bitmap );
+    ok( (HBITMAP)br.lbHatch == bitmap, "wrong handle %p/%p\n", (HBITMAP)br.lbHatch, bitmap );
     ret = GetObjectW( bitmap, sizeof(dib), &dib );
     ok( ret == sizeof(dib), "wrong size %u\n", ret );
     DeleteObject( brush );
@@ -152,7 +152,7 @@ static void test_pattern_brush(void)
     ok( ret == sizeof(br), "wrong size %u\n", ret );
     ok( br.lbStyle == BS_DIBPATTERN, "wrong style %u\n", br.lbStyle );
     ok( br.lbColor == 0, "wrong color %u\n", br.lbColor );
-    todo_wine ok( (BITMAPINFO *)br.lbHatch == info || broken(!br.lbHatch), /* nt4 */
+    ok( (BITMAPINFO *)br.lbHatch == info || broken(!br.lbHatch), /* nt4 */
         "wrong handle %p/%p\n", (BITMAPINFO *)br.lbHatch, info );
     DeleteObject( brush );
 
@@ -165,8 +165,8 @@ static void test_pattern_brush(void)
     ret = GetObjectW( brush, sizeof(br), &br );
     ok( ret == sizeof(br), "wrong size %u\n", ret );
     ok( br.lbStyle == BS_DIBPATTERN, "wrong style %u\n", br.lbStyle );
-    todo_wine ok( br.lbColor == 0, "wrong color %u\n", br.lbColor );
-    todo_wine ok( (BITMAPINFO *)br.lbHatch == info || broken(!br.lbHatch), /* nt4 */
+    ok( br.lbColor == 0, "wrong color %u\n", br.lbColor );
+    ok( (BITMAPINFO *)br.lbHatch == info || broken(!br.lbHatch), /* nt4 */
         "wrong handle %p/%p\n", (BITMAPINFO *)br.lbHatch, info );
 
     mem = GlobalAlloc( GMEM_MOVEABLE, sizeof(buffer) );
@@ -181,10 +181,10 @@ static void test_pattern_brush(void)
     ret = GetObjectW( brush, sizeof(br), &br );
     ok( ret == sizeof(br), "wrong size %u\n", ret );
     ok( br.lbStyle == BS_DIBPATTERN, "wrong style %u\n", br.lbStyle );
-    todo_wine ok( br.lbColor == 0, "wrong color %u\n", br.lbColor );
+    ok( br.lbColor == 0, "wrong color %u\n", br.lbColor );
     ok( (HGLOBAL)br.lbHatch != mem, "wrong handle %p/%p\n", (HGLOBAL)br.lbHatch, mem );
     bits = GlobalLock( mem );
-    todo_wine ok( (HGLOBAL)br.lbHatch == bits || broken(!br.lbHatch), /* nt4 */
+    ok( (HGLOBAL)br.lbHatch == bits || broken(!br.lbHatch), /* nt4 */
         "wrong handle %p/%p\n", (HGLOBAL)br.lbHatch, bits );
     ret = GlobalFlags( mem );
     ok( ret == 2, "wrong flags %x\n", ret );




More information about the wine-cvs mailing list