user32/tests: Expand the DCX_NORESETATTR test to make sure we check the correct DC.
This commit is contained in:
parent
d47628739e
commit
d8867fa718
|
@ -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 );
|
||||
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 );
|
||||
/* Win9x seems to silently ignore DCX_NORESETATTRS */
|
||||
ok( rop == def_rop || rop == R2_WHITE, "wrong ROP2 %d\n", rop );
|
||||
|
||||
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 );
|
||||
rop = GetROP2( hdc );
|
||||
ok( rop == R2_WHITE, "wrong ROP2 %d\n", rop );
|
||||
}
|
||||
}
|
||||
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] );
|
||||
|
||||
ReleaseDC( hwnd_cache, hdc );
|
||||
hdc = GetDCEx( hwnd_cache, 0, DCX_USESTYLE | DCX_NORESETATTRS );
|
||||
for (i = 0; i < 20; i++)
|
||||
{
|
||||
hdc = hdcs[i] = GetDCEx( hwnd_cache, 0, DCX_USESTYLE | DCX_NORESETATTRS );
|
||||
if (!hdc) break;
|
||||
rop = GetROP2( hdc );
|
||||
ok( rop == def_rop || rop == R2_WHITE, "wrong ROP2 %d after release\n", rop );
|
||||
ReleaseDC( hwnd_cache, 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] );
|
||||
|
||||
hdc = GetDCEx( hwnd_cache, 0, DCX_USESTYLE );
|
||||
for (i = 0; i < 20; i++)
|
||||
{
|
||||
hdc = hdcs[i] = GetDCEx( hwnd_cache, 0, DCX_USESTYLE );
|
||||
if (!hdc) break;
|
||||
rop = GetROP2( hdc );
|
||||
ok( rop == def_rop, "wrong ROP2 %d after release\n", rop );
|
||||
ReleaseDC( hwnd_cache, 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 */
|
||||
|
||||
|
|
Loading…
Reference in New Issue