Alexandre Julliard : user32/tests: Expand the DCX_NORESETATTR test to make sure we check the correct DC.
Alexandre Julliard
julliard at winehq.org
Thu Jun 17 11:17:16 CDT 2010
Module: wine
Branch: master
Commit: d8867fa7180a64ed5a1f366e1564e03f9a0d73bb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d8867fa7180a64ed5a1f366e1564e03f9a0d73bb
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Jun 17 12:56:25 2010 +0200
user32/tests: Expand the DCX_NORESETATTR test to make sure we check the correct DC.
---
dlls/user32/tests/dce.c | 75 ++++++++++++++++++++++++++++++++++------------
1 files changed, 55 insertions(+), 20 deletions(-)
diff --git a/dlls/user32/tests/dce.c b/dlls/user32/tests/dce.c
index 31c6ec0..cfa07e5 100644
--- a/dlls/user32/tests/dce.c
+++ b/dlls/user32/tests/dce.c
@@ -40,7 +40,8 @@ static HWND hwnd_cache, hwnd_owndc, hwnd_classdc, hwnd_classdc2;
static void test_dc_attributes(void)
{
HDC hdc, old_hdc;
- INT rop, def_rop;
+ HDC hdcs[20];
+ INT i, rop, def_rop, found_dc;
/* test cache DC */
@@ -57,26 +58,60 @@ static void test_dc_attributes(void)
ok( rop == def_rop, "wrong ROP2 %d after release\n", rop );
SetROP2( hdc, R2_WHITE );
ReleaseDC( hwnd_cache, hdc );
+ old_hdc = hdc;
- hdc = GetDCEx( hwnd_cache, 0, DCX_USESTYLE | DCX_NORESETATTRS );
- rop = GetROP2( hdc );
- /* Win9x seems to silently ignore DCX_NORESETATTRS */
- ok( rop == def_rop || rop == R2_WHITE, "wrong ROP2 %d\n", rop );
-
- SetROP2( hdc, R2_WHITE );
- rop = GetROP2( hdc );
- ok( rop == R2_WHITE, "wrong ROP2 %d\n", rop );
-
- ReleaseDC( hwnd_cache, hdc );
- hdc = GetDCEx( hwnd_cache, 0, DCX_USESTYLE | DCX_NORESETATTRS );
- rop = GetROP2( hdc );
- ok( rop == def_rop || rop == R2_WHITE, "wrong ROP2 %d after release\n", rop );
- ReleaseDC( hwnd_cache, hdc );
-
- hdc = GetDCEx( hwnd_cache, 0, DCX_USESTYLE );
- rop = GetROP2( hdc );
- ok( rop == def_rop, "wrong ROP2 %d after release\n", rop );
- ReleaseDC( hwnd_cache, hdc );
+ found_dc = 0;
+ for (i = 0; i < 20; i++)
+ {
+ hdc = hdcs[i] = GetDCEx( hwnd_cache, 0, DCX_USESTYLE | DCX_NORESETATTRS );
+ if (!hdc) break;
+ rop = GetROP2( hdc );
+ if (hdc == old_hdc)
+ todo_wine ok( rop == def_rop, "wrong ROP2 %d after release %p/%p\n", rop, old_hdc, hdc );
+ else
+ ok( rop == def_rop, "wrong ROP2 %d after release %p/%p\n", rop, old_hdc, hdc );
+ if (hdc == old_hdc)
+ {
+ found_dc = 1;
+ SetROP2( hdc, R2_WHITE );
+ }
+ }
+ if (!found_dc)
+ {
+ trace( "hdc %p not found in cache using %p\n", old_hdc, hdcs[0] );
+ old_hdc = hdcs[0];
+ SetROP2( old_hdc, R2_WHITE );
+ }
+ while (i >= 0) ReleaseDC( hwnd_cache, hdcs[--i] );
+
+ for (i = 0; i < 20; i++)
+ {
+ hdc = hdcs[i] = GetDCEx( hwnd_cache, 0, DCX_USESTYLE | DCX_NORESETATTRS );
+ if (!hdc) break;
+ rop = GetROP2( hdc );
+ if (hdc == old_hdc)
+ ok( rop == R2_WHITE || broken( rop == def_rop), /* win9x doesn't support DCX_NORESETATTRS */
+ "wrong ROP2 %d after release %p/%p\n", rop, old_hdc, hdc );
+ else
+ ok( rop == def_rop, "wrong ROP2 %d after release %p/%p\n", rop, old_hdc, hdc );
+ }
+ while (i >= 0) ReleaseDC( hwnd_cache, hdcs[--i] );
+
+ for (i = 0; i < 20; i++)
+ {
+ hdc = hdcs[i] = GetDCEx( hwnd_cache, 0, DCX_USESTYLE );
+ if (!hdc) break;
+ rop = GetROP2( hdc );
+ if (hdc == old_hdc)
+ {
+ todo_wine ok( rop == R2_WHITE || broken( rop == def_rop),
+ "wrong ROP2 %d after release %p/%p\n", rop, old_hdc, hdc );
+ SetROP2( old_hdc, def_rop );
+ }
+ else
+ ok( rop == def_rop, "wrong ROP2 %d after release %p/%p\n", rop, old_hdc, hdc );
+ }
+ while (i >= 0) ReleaseDC( hwnd_cache, hdcs[--i] );
/* test own DC */
More information about the wine-cvs
mailing list