d3d9/tests: Use primary monitor screen size to perform tests.

This commit is contained in:
Peter Urbanec 2011-02-11 15:39:20 +11:00 committed by Alexandre Julliard
parent a02195a148
commit 766e732fb3
1 changed files with 26 additions and 14 deletions

View File

@ -24,6 +24,9 @@
#include <d3d9.h>
#include "wine/test.h"
static INT screen_width;
static INT screen_height;
static IDirect3D9 *(WINAPI *pDirect3DCreate9)(UINT);
static int get_refcount(IUnknown *object)
@ -56,8 +59,8 @@ static IDirect3DDevice9 *create_device(IDirect3D9 *d3d9, HWND device_window, HWN
present_parameters.Windowed = windowed;
present_parameters.hDeviceWindow = device_window;
present_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
present_parameters.BackBufferWidth = 640;
present_parameters.BackBufferHeight = 480;
present_parameters.BackBufferWidth = screen_width;
present_parameters.BackBufferHeight = screen_height;
present_parameters.BackBufferFormat = D3DFMT_A8R8G8B8;
present_parameters.EnableAutoDepthStencil = TRUE;
present_parameters.AutoDepthStencilFormat = D3DFMT_D24S8;
@ -82,8 +85,8 @@ static HRESULT reset_device(IDirect3DDevice9 *device, HWND device_window, BOOL w
present_parameters.Windowed = windowed;
present_parameters.hDeviceWindow = device_window;
present_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
present_parameters.BackBufferWidth = 640;
present_parameters.BackBufferHeight = 480;
present_parameters.BackBufferWidth = screen_width;
present_parameters.BackBufferHeight = screen_height;
present_parameters.BackBufferFormat = D3DFMT_A8R8G8B8;
present_parameters.EnableAutoDepthStencil = TRUE;
present_parameters.AutoDepthStencilFormat = D3DFMT_D24S8;
@ -2207,7 +2210,7 @@ static void test_scissor_size(void)
{
IDirect3D9 *d3d9_ptr = 0;
unsigned int i;
static const struct {
static struct {
int winx; int winy; int backx; int backy; BOOL window;
} scts[] = { /* scissor tests */
{800, 600, 640, 480, TRUE},
@ -2233,6 +2236,12 @@ static void test_scissor_size(void)
hwnd = CreateWindow("d3d9_test_wc", "d3d9_test",
WS_MAXIMIZE | WS_VISIBLE | WS_CAPTION , 0, 0, scts[i].winx, scts[i].winy, 0, 0, 0, 0);
if (!scts[i].window)
{
scts[i].backx = screen_width;
scts[i].backy = screen_height;
}
ZeroMemory(&present_parameters, sizeof(present_parameters));
present_parameters.Windowed = scts[i].window;
present_parameters.hDeviceWindow = hwnd;
@ -2266,8 +2275,8 @@ static void test_scissor_size(void)
ok(scissorrect.right == scts[i].backx && scissorrect.bottom == scts[i].backy && scissorrect.top == 0 && scissorrect.left == 0, "Scissorrect missmatch (%d, %d) should be (%d, %d)\n", scissorrect.right, scissorrect.bottom, scts[i].backx, scts[i].backy);
/* check the scissorrect values after a reset */
present_parameters.BackBufferWidth = 800;
present_parameters.BackBufferHeight = 600;
present_parameters.BackBufferWidth = screen_width;
present_parameters.BackBufferHeight = screen_height;
hr = IDirect3DDevice9_Reset(device_ptr, &present_parameters);
ok(hr == D3D_OK, "IDirect3DDevice9_Reset failed with %08x\n", hr);
hr = IDirect3DDevice9_TestCooperativeLevel(device_ptr);
@ -2275,7 +2284,7 @@ static void test_scissor_size(void)
hr = IDirect3DDevice9_GetScissorRect(device_ptr, &scissorrect);
ok(hr == D3D_OK, "IDirect3DDevice9_GetScissorRect failed with: %08x\n", hr);
ok(scissorrect.right == 800 && scissorrect.bottom == 600 && scissorrect.top == 0 && scissorrect.left == 0, "Scissorrect missmatch (%d, %d) should be (%d, %d)\n", scissorrect.right, scissorrect.bottom, 800, 600);
ok(scissorrect.right == screen_width && scissorrect.bottom == screen_height && scissorrect.top == 0 && scissorrect.left == 0, "Scissorrect missmatch (%d, %d) should be (%d, %d)\n", scissorrect.right, scissorrect.bottom, screen_width, screen_height);
if(device_ptr) {
ULONG ref;
@ -2423,7 +2432,7 @@ static DWORD WINAPI wndproc_thread(void *param)
BOOL ret;
p->dummy_window = CreateWindowA("d3d9_test_wndproc_wc", "d3d9_test",
WS_MAXIMIZE | WS_VISIBLE | WS_CAPTION, 0, 0, 640, 480, 0, 0, 0, 0);
WS_MAXIMIZE | WS_VISIBLE | WS_CAPTION, 0, 0, screen_width, screen_height, 0, 0, 0, 0);
p->running_in_foreground = SetForegroundWindow(p->dummy_window);
ret = SetEvent(p->window_created);
@ -2484,9 +2493,9 @@ static void test_wndproc(void)
ok(!!thread_params.test_finished, "CreateEvent failed, last error %#x.\n", GetLastError());
focus_window = CreateWindowA("d3d9_test_wndproc_wc", "d3d9_test",
WS_MAXIMIZE | WS_VISIBLE | WS_CAPTION, 0, 0, 640, 480, 0, 0, 0, 0);
WS_MAXIMIZE | WS_VISIBLE | WS_CAPTION, 0, 0, screen_width, screen_height, 0, 0, 0, 0);
device_window = CreateWindowA("d3d9_test_wndproc_wc", "d3d9_test",
WS_MAXIMIZE | WS_VISIBLE | WS_CAPTION, 0, 0, 640, 480, 0, 0, 0, 0);
WS_MAXIMIZE | WS_VISIBLE | WS_CAPTION, 0, 0, screen_width, screen_height, 0, 0, 0, 0);
thread = CreateThread(NULL, 0, wndproc_thread, &thread_params, 0, &tid);
ok(!!thread, "Failed to create thread, last error %#x.\n", GetLastError());
@ -2628,9 +2637,9 @@ static void test_wndproc_windowed(void)
ok(!!thread_params.test_finished, "CreateEvent failed, last error %#x.\n", GetLastError());
focus_window = CreateWindowA("d3d9_test_wndproc_wc", "d3d9_test",
WS_MAXIMIZE | WS_VISIBLE | WS_CAPTION, 0, 0, 640, 480, 0, 0, 0, 0);
WS_MAXIMIZE | WS_VISIBLE | WS_CAPTION, 0, 0, screen_width, screen_height, 0, 0, 0, 0);
device_window = CreateWindowA("d3d9_test_wndproc_wc", "d3d9_test",
WS_MAXIMIZE | WS_VISIBLE | WS_CAPTION, 0, 0, 640, 480, 0, 0, 0, 0);
WS_MAXIMIZE | WS_VISIBLE | WS_CAPTION, 0, 0, screen_width, screen_height, 0, 0, 0, 0);
thread = CreateThread(NULL, 0, wndproc_thread, &thread_params, 0, &tid);
ok(!!thread, "Failed to create thread, last error %#x.\n", GetLastError());
@ -2830,7 +2839,7 @@ static void test_fpu_setup(void)
ok(!!d3d9, "Failed to create a d3d9 object.\n");
if (!d3d9) return;
window = CreateWindowA("d3d9_test_wc", "d3d9_test", WS_CAPTION, 0, 0, 640, 480, 0, 0, 0, 0);
window = CreateWindowA("d3d9_test_wc", "d3d9_test", WS_CAPTION, 0, 0, screen_width, screen_height, 0, 0, 0, 0);
ok(!!window, "Failed to create a window.\n");
if (!window) goto done;
@ -2906,6 +2915,9 @@ START_TEST(device)
}
IDirect3D9_Release(d3d9);
screen_width = GetSystemMetrics(SM_CXSCREEN);
screen_height = GetSystemMetrics(SM_CYSCREEN);
test_fpu_setup();
test_multi_device();
test_display_formats();