diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index eddf846e54b..e48d4c54f1c 100644 --- a/dlls/ddraw/tests/ddraw2.c +++ b/dlls/ddraw/tests/ddraw2.c @@ -6203,6 +6203,34 @@ static void test_set_surface_desc(void) hr = IDirectDrawSurface3_SetSurfaceDesc(surface3, &ddsd, 0); ok(hr == DDERR_INVALIDPARAMS, "Got hr %#lx.\n", hr); + /* Check that other surface properties are retained. */ + + ddsd.ddckCKSrcBlt.dwColorSpaceLowValue = 0x00ff00ff; + ddsd.ddckCKSrcBlt.dwColorSpaceHighValue = 0x0000ff00; + hr = IDirectDrawSurface3_SetColorKey(surface3, DDCKEY_SRCBLT, &ddsd.ddckCKSrcBlt); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + reset_ddsd(&ddsd); + ddsd.dwFlags = DDSD_WIDTH | DDSD_PITCH | DDSD_HEIGHT | DDSD_PIXELFORMAT | DDSD_LPSURFACE; + ddsd.dwWidth = 8; + U1(ddsd).lPitch = 8 * 2; + ddsd.dwHeight = 8; + ddsd.lpSurface = data; + U4(ddsd).ddpfPixelFormat.dwSize = sizeof(U4(ddsd).ddpfPixelFormat); + U4(ddsd).ddpfPixelFormat.dwFlags = DDPF_RGB; /* D3DFMT_R5G6B5 */ + U1(U4(ddsd).ddpfPixelFormat).dwRGBBitCount = 16; + U2(U4(ddsd).ddpfPixelFormat).dwRBitMask = 0xf800; + U3(U4(ddsd).ddpfPixelFormat).dwGBitMask = 0x07e0; + U4(U4(ddsd).ddpfPixelFormat).dwBBitMask = 0x001f; + hr = IDirectDrawSurface3_SetSurfaceDesc(surface3, &ddsd, 0); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + memset(&ddsd.ddckCKSrcBlt, 0xcc, sizeof(ddsd.ddckCKSrcBlt)); + hr = IDirectDrawSurface3_GetColorKey(surface3, DDCKEY_SRCBLT, &ddsd.ddckCKSrcBlt); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(ddsd.ddckCKSrcBlt.dwColorSpaceLowValue == 0x00ff00ff, + "Got low color key value %#lx.\n", ddsd.ddckCKSrcBlt.dwColorSpaceLowValue); + IDirectDrawSurface3_Release(surface3); /* Test mipmap texture. */ diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index a658de37b94..657ea982154 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -7861,6 +7861,34 @@ static void test_set_surface_desc(void) hr = IDirectDrawSurface4_SetSurfaceDesc(surface, &ddsd, 0); ok(hr == DDERR_INVALIDPARAMS, "Got hr %#lx.\n", hr); + /* Check that other surface properties are retained. */ + + ddsd.ddckCKSrcBlt.dwColorSpaceLowValue = 0x00ff00ff; + ddsd.ddckCKSrcBlt.dwColorSpaceHighValue = 0x0000ff00; + hr = IDirectDrawSurface4_SetColorKey(surface, DDCKEY_SRCBLT, &ddsd.ddckCKSrcBlt); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + reset_ddsd(&ddsd); + ddsd.dwFlags = DDSD_WIDTH | DDSD_PITCH | DDSD_HEIGHT | DDSD_PIXELFORMAT | DDSD_LPSURFACE; + ddsd.dwWidth = 8; + U1(ddsd).lPitch = 8 * 2; + ddsd.dwHeight = 8; + ddsd.lpSurface = data; + U4(ddsd).ddpfPixelFormat.dwSize = sizeof(U4(ddsd).ddpfPixelFormat); + U4(ddsd).ddpfPixelFormat.dwFlags = DDPF_RGB; /* D3DFMT_R5G6B5 */ + U1(U4(ddsd).ddpfPixelFormat).dwRGBBitCount = 16; + U2(U4(ddsd).ddpfPixelFormat).dwRBitMask = 0xf800; + U3(U4(ddsd).ddpfPixelFormat).dwGBitMask = 0x07e0; + U4(U4(ddsd).ddpfPixelFormat).dwBBitMask = 0x001f; + hr = IDirectDrawSurface4_SetSurfaceDesc(surface, &ddsd, 0); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + memset(&ddsd.ddckCKSrcBlt, 0xcc, sizeof(ddsd.ddckCKSrcBlt)); + hr = IDirectDrawSurface4_GetColorKey(surface, DDCKEY_SRCBLT, &ddsd.ddckCKSrcBlt); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(ddsd.ddckCKSrcBlt.dwColorSpaceLowValue == 0x00ff00ff, + "Got low color key value %#lx.\n", ddsd.ddckCKSrcBlt.dwColorSpaceLowValue); + IDirectDrawSurface4_Release(surface); /* Test mipmap texture. */ diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index a1c791a9116..d642a644e97 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -7718,6 +7718,34 @@ static void test_set_surface_desc(void) hr = IDirectDrawSurface7_SetSurfaceDesc(surface, &ddsd, 0); ok(hr == DDERR_INVALIDPARAMS, "Got hr %#lx.\n", hr); + /* Check that other surface properties are retained. */ + + ddsd.ddckCKSrcBlt.dwColorSpaceLowValue = 0x00ff00ff; + ddsd.ddckCKSrcBlt.dwColorSpaceHighValue = 0x0000ff00; + hr = IDirectDrawSurface7_SetColorKey(surface, DDCKEY_SRCBLT, &ddsd.ddckCKSrcBlt); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + reset_ddsd(&ddsd); + ddsd.dwFlags = DDSD_WIDTH | DDSD_PITCH | DDSD_HEIGHT | DDSD_PIXELFORMAT | DDSD_LPSURFACE; + ddsd.dwWidth = 8; + U1(ddsd).lPitch = 8 * 2; + ddsd.dwHeight = 8; + ddsd.lpSurface = data; + U4(ddsd).ddpfPixelFormat.dwSize = sizeof(U4(ddsd).ddpfPixelFormat); + U4(ddsd).ddpfPixelFormat.dwFlags = DDPF_RGB; /* D3DFMT_R5G6B5 */ + U1(U4(ddsd).ddpfPixelFormat).dwRGBBitCount = 16; + U2(U4(ddsd).ddpfPixelFormat).dwRBitMask = 0xf800; + U3(U4(ddsd).ddpfPixelFormat).dwGBitMask = 0x07e0; + U4(U4(ddsd).ddpfPixelFormat).dwBBitMask = 0x001f; + hr = IDirectDrawSurface7_SetSurfaceDesc(surface, &ddsd, 0); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + memset(&ddsd.ddckCKSrcBlt, 0xcc, sizeof(ddsd.ddckCKSrcBlt)); + hr = IDirectDrawSurface7_GetColorKey(surface, DDCKEY_SRCBLT, &ddsd.ddckCKSrcBlt); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(ddsd.ddckCKSrcBlt.dwColorSpaceLowValue == 0x00ff00ff, + "Got low color key value %#lx.\n", ddsd.ddckCKSrcBlt.dwColorSpaceLowValue); + IDirectDrawSurface7_Release(surface); /* Test mipmap texture. */