Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/ddraw/tests/ddraw1.c | 41 +++++++++++++++++++
dlls/ddraw/tests/ddraw2.c | 85 ++++++++++++++++++++++++++++++++++++++-
dlls/ddraw/tests/ddraw4.c | 85 ++++++++++++++++++++++++++++++++++++++-
dlls/ddraw/tests/ddraw7.c | 85 ++++++++++++++++++++++++++++++++++++++-
4 files changed, 293 insertions(+), 3 deletions(-)
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index 532065a4796..6f0948bbaba 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -13837,7 +13837,48 @@ static BOOL CALLBACK test_get_display_mode_cb(HMONITOR monitor, HDC hdc, RECT *m
static void test_get_display_mode(void)
{
+ static const DWORD flags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_REFRESHRATE | DDSD_PIXELFORMAT | DDSD_PITCH;
+ DDSURFACEDESC surface_desc;
+ IDirectDraw *ddraw;
+ DEVMODEW devmode;
+ HRESULT hr;
+ BOOL ret;
+
EnumDisplayMonitors(NULL, NULL, test_get_display_mode_cb, 0);
+
+ ddraw = create_ddraw();
+ ok(!!ddraw, "Failed to create a ddraw object.\n");
+
+ memset(&devmode, 0, sizeof(devmode));
+ devmode.dmSize = sizeof(devmode);
+ ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode);
+ ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
+
+ surface_desc.dwSize = sizeof(surface_desc);
+ hr = IDirectDraw_GetDisplayMode(ddraw, &surface_desc);
+ ok(hr == DD_OK, "GetDisplayMode failed, hr %#x.\n", hr);
+ ok(surface_desc.dwSize == sizeof(surface_desc), "Expected dwSize %u, got %u.\n",
+ sizeof(surface_desc), surface_desc.dwSize);
+ ok(surface_desc.dwFlags == flags, "Expected dwFlags %#x, got %#x.\n", flags,
+ surface_desc.dwFlags);
+ ok(surface_desc.dwWidth == devmode.dmPelsWidth, "Expected width %u, got %u.\n",
+ devmode.dmPelsWidth, surface_desc.dwWidth);
+ ok(surface_desc.dwHeight == devmode.dmPelsHeight, "Expected height %u, got %u.\n",
+ devmode.dmPelsHeight, surface_desc.dwHeight);
+ todo_wine_if(devmode.dmDisplayFrequency != 60)
+ ok(surface_desc.dwRefreshRate == devmode.dmDisplayFrequency, "Expected frequency %u, got %u.\n",
+ devmode.dmDisplayFrequency, surface_desc.dwRefreshRate);
+ ok(surface_desc.ddpfPixelFormat.dwSize == sizeof(surface_desc.ddpfPixelFormat),
+ "Expected ddpfPixelFormat.dwSize %u, got %u.\n", sizeof(surface_desc.ddpfPixelFormat),
+ surface_desc.ddpfPixelFormat.dwSize);
+ ok(surface_desc.ddpfPixelFormat.dwRGBBitCount == devmode.dmBitsPerPel,
+ "Expected ddpfPixelFormat.dwRGBBitCount %u, got %u.\n", devmode.dmBitsPerPel,
+ surface_desc.ddpfPixelFormat.dwRGBBitCount);
+ ok(surface_desc.lPitch == devmode.dmPelsWidth * devmode.dmBitsPerPel / 8,
+ "Expected pitch %u, got %u.\n", devmode.dmPelsWidth * devmode.dmBitsPerPel / 8,
+ surface_desc.lPitch);
+
+ IDirectDraw_Release(ddraw);
}
START_TEST(ddraw1)
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 800dab0fe83..abcd2010b23 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -14495,8 +14495,11 @@ struct find_different_mode_param
{
unsigned int old_width;
unsigned int old_height;
+ unsigned int old_frequency;
unsigned int new_width;
unsigned int new_height;
+ unsigned int new_frequency;
+ unsigned int new_bpp;
};
static HRESULT CALLBACK find_different_mode_callback(DDSURFACEDESC *surface_desc, void *context)
@@ -14506,10 +14509,13 @@ static HRESULT CALLBACK find_different_mode_callback(DDSURFACEDESC *surface_desc
if (U1(U4(*surface_desc).ddpfPixelFormat).dwRGBBitCount != registry_mode.dmBitsPerPel)
return DDENUMRET_OK;
- if (surface_desc->dwWidth != param->old_width && surface_desc->dwHeight != param->old_height)
+ if (surface_desc->dwWidth != param->old_width && surface_desc->dwHeight != param->old_height &&
+ surface_desc->dwRefreshRate != param->old_frequency)
{
param->new_width = surface_desc->dwWidth;
param->new_height = surface_desc->dwHeight;
+ param->new_frequency = surface_desc->dwRefreshRate;
+ param->new_bpp = surface_desc->ddpfPixelFormat.dwRGBBitCount;
return DDENUMRET_CANCEL;
}
@@ -14722,7 +14728,84 @@ static BOOL CALLBACK test_get_display_mode_cb(HMONITOR monitor, HDC hdc, RECT *m
static void test_get_display_mode(void)
{
+ static const DWORD flags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_REFRESHRATE | DDSD_PIXELFORMAT | DDSD_PITCH;
+ struct find_different_mode_param param;
+ DDSURFACEDESC surface_desc;
+ IDirectDraw2 *ddraw;
+ DEVMODEW devmode;
+ HWND window;
+ HRESULT hr;
+ BOOL ret;
+
EnumDisplayMonitors(NULL, NULL, test_get_display_mode_cb, 0);
+
+ ddraw = create_ddraw();
+ ok(!!ddraw, "Failed to create a ddraw object.\n");
+ window = create_window();
+ ok(!!window, "Failed to create a window.\n");
+
+ hr = IDirectDraw2_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+ ok(hr == DD_OK, "SetCooperativeLevel failed, hr %#x.\n", hr);
+
+ memset(&devmode, 0, sizeof(devmode));
+ devmode.dmSize = sizeof(devmode);
+ ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode);
+ ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
+
+ surface_desc.dwSize = sizeof(surface_desc);
+ hr = IDirectDraw2_GetDisplayMode(ddraw, &surface_desc);
+ ok(hr == DD_OK, "GetDisplayMode failed, hr %#x.\n", hr);
+ ok(surface_desc.dwSize == sizeof(surface_desc), "Expected dwSize %u, got %u.\n",
+ sizeof(surface_desc), surface_desc.dwSize);
+ ok(surface_desc.dwFlags == flags, "Expected dwFlags %#x, got %#x.\n", flags,
+ surface_desc.dwFlags);
+ ok(surface_desc.dwWidth == devmode.dmPelsWidth, "Expected width %u, got %u.\n",
+ devmode.dmPelsWidth, surface_desc.dwWidth);
+ ok(surface_desc.dwHeight == devmode.dmPelsHeight, "Expected height %u, got %u.\n",
+ devmode.dmPelsHeight, surface_desc.dwHeight);
+ todo_wine_if(devmode.dmDisplayFrequency != 60)
+ ok(surface_desc.dwRefreshRate == devmode.dmDisplayFrequency, "Expected frequency %u, got %u.\n",
+ devmode.dmDisplayFrequency, surface_desc.dwRefreshRate);
+ ok(surface_desc.ddpfPixelFormat.dwSize == sizeof(surface_desc.ddpfPixelFormat),
+ "Expected ddpfPixelFormat.dwSize %u, got %u.\n", sizeof(surface_desc.ddpfPixelFormat),
+ surface_desc.ddpfPixelFormat.dwSize);
+ ok(surface_desc.ddpfPixelFormat.dwRGBBitCount == devmode.dmBitsPerPel,
+ "Expected ddpfPixelFormat.dwRGBBitCount %u, got %u.\n", devmode.dmBitsPerPel,
+ surface_desc.ddpfPixelFormat.dwRGBBitCount);
+ ok(surface_desc.lPitch == devmode.dmPelsWidth * devmode.dmBitsPerPel / 8,
+ "Expected pitch %u, got %u.\n", devmode.dmPelsWidth * devmode.dmBitsPerPel / 8,
+ surface_desc.lPitch);
+
+ memset(¶m, 0, sizeof(param));
+ param.old_frequency = surface_desc.dwRefreshRate;
+ hr = IDirectDraw2_EnumDisplayModes(ddraw, DDEDM_REFRESHRATES, NULL, ¶m,
+ find_different_mode_callback);
+ ok(hr == DD_OK, "EnumDisplayModes failed, hr %#x.\n", hr);
+ if (!param.new_frequency)
+ {
+ skip("Failed to find a display mode with a different frequency.\n");
+ goto done;
+ }
+
+ hr = IDirectDraw2_SetDisplayMode(ddraw, param.new_width, param.new_height, param.new_bpp,
+ param.new_frequency, 0);
+ ok(hr == DD_OK, "SetDisplayMode failed, hr %#x.\n", hr);
+ hr = IDirectDraw2_GetDisplayMode(ddraw, &surface_desc);
+ ok(hr == DD_OK, "GetDisplayMode failed, hr %#x.\n", hr);
+ ok(surface_desc.dwWidth == param.new_width, "Expected width %u, got %u.\n", param.new_width,
+ surface_desc.dwWidth);
+ ok(surface_desc.dwHeight == param.new_height, "Expected height %u, got %u.\n", param.new_height,
+ surface_desc.dwHeight);
+ todo_wine
+ ok(surface_desc.dwRefreshRate == param.new_frequency, "Expected frequency %u, got %u.\n",
+ param.new_frequency, surface_desc.dwRefreshRate);
+ ok(surface_desc.ddpfPixelFormat.dwRGBBitCount == param.new_bpp,
+ "Expected ddpfPixelFormat.dwRGBBitCount %u, got %u.\n", devmode.dmBitsPerPel,
+ surface_desc.ddpfPixelFormat.dwRGBBitCount);
+
+done:
+ DestroyWindow(window);
+ IDirectDraw2_Release(ddraw);
}
START_TEST(ddraw2)
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index d4f4f08e396..071acbacedc 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -17556,8 +17556,11 @@ struct find_different_mode_param
{
unsigned int old_width;
unsigned int old_height;
+ unsigned int old_frequency;
unsigned int new_width;
unsigned int new_height;
+ unsigned int new_frequency;
+ unsigned int new_bpp;
};
static HRESULT CALLBACK find_different_mode_callback(DDSURFACEDESC2 *surface_desc, void *context)
@@ -17567,10 +17570,13 @@ static HRESULT CALLBACK find_different_mode_callback(DDSURFACEDESC2 *surface_des
if (U1(U4(*surface_desc).ddpfPixelFormat).dwRGBBitCount != registry_mode.dmBitsPerPel)
return DDENUMRET_OK;
- if (surface_desc->dwWidth != param->old_width && surface_desc->dwHeight != param->old_height)
+ if (surface_desc->dwWidth != param->old_width && surface_desc->dwHeight != param->old_height &&
+ surface_desc->dwRefreshRate != param->old_frequency)
{
param->new_width = surface_desc->dwWidth;
param->new_height = surface_desc->dwHeight;
+ param->new_frequency = surface_desc->dwRefreshRate;
+ param->new_bpp = surface_desc->ddpfPixelFormat.dwRGBBitCount;
return DDENUMRET_CANCEL;
}
@@ -17783,7 +17789,84 @@ static BOOL CALLBACK test_get_display_mode_cb(HMONITOR monitor, HDC hdc, RECT *m
static void test_get_display_mode(void)
{
+ static const DWORD flags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_REFRESHRATE | DDSD_PIXELFORMAT | DDSD_PITCH;
+ struct find_different_mode_param param;
+ DDSURFACEDESC2 surface_desc;
+ IDirectDraw4 *ddraw;
+ DEVMODEW devmode;
+ HWND window;
+ HRESULT hr;
+ BOOL ret;
+
EnumDisplayMonitors(NULL, NULL, test_get_display_mode_cb, 0);
+
+ ddraw = create_ddraw();
+ ok(!!ddraw, "Failed to create a ddraw object.\n");
+ window = create_window();
+ ok(!!window, "Failed to create a window.\n");
+
+ hr = IDirectDraw4_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+ ok(hr == DD_OK, "SetCooperativeLevel failed, hr %#x.\n", hr);
+
+ memset(&devmode, 0, sizeof(devmode));
+ devmode.dmSize = sizeof(devmode);
+ ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode);
+ ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
+
+ surface_desc.dwSize = sizeof(surface_desc);
+ hr = IDirectDraw4_GetDisplayMode(ddraw, &surface_desc);
+ ok(hr == DD_OK, "GetDisplayMode failed, hr %#x.\n", hr);
+ ok(surface_desc.dwSize == sizeof(surface_desc), "Expected dwSize %u, got %u.\n",
+ sizeof(surface_desc), surface_desc.dwSize);
+ ok(surface_desc.dwFlags == flags, "Expected dwFlags %#x, got %#x.\n", flags,
+ surface_desc.dwFlags);
+ ok(surface_desc.dwWidth == devmode.dmPelsWidth, "Expected width %u, got %u.\n",
+ devmode.dmPelsWidth, surface_desc.dwWidth);
+ ok(surface_desc.dwHeight == devmode.dmPelsHeight, "Expected height %u, got %u.\n",
+ devmode.dmPelsHeight, surface_desc.dwHeight);
+ todo_wine_if(devmode.dmDisplayFrequency != 60)
+ ok(surface_desc.dwRefreshRate == devmode.dmDisplayFrequency, "Expected frequency %u, got %u.\n",
+ devmode.dmDisplayFrequency, surface_desc.dwRefreshRate);
+ ok(surface_desc.ddpfPixelFormat.dwSize == sizeof(surface_desc.ddpfPixelFormat),
+ "Expected ddpfPixelFormat.dwSize %u, got %u.\n", sizeof(surface_desc.ddpfPixelFormat),
+ surface_desc.ddpfPixelFormat.dwSize);
+ ok(surface_desc.ddpfPixelFormat.dwRGBBitCount == devmode.dmBitsPerPel,
+ "Expected ddpfPixelFormat.dwRGBBitCount %u, got %u.\n", devmode.dmBitsPerPel,
+ surface_desc.ddpfPixelFormat.dwRGBBitCount);
+ ok(surface_desc.lPitch == devmode.dmPelsWidth * devmode.dmBitsPerPel / 8,
+ "Expected pitch %u, got %u.\n", devmode.dmPelsWidth * devmode.dmBitsPerPel / 8,
+ surface_desc.lPitch);
+
+ memset(¶m, 0, sizeof(param));
+ param.old_frequency = surface_desc.dwRefreshRate;
+ hr = IDirectDraw4_EnumDisplayModes(ddraw, DDEDM_REFRESHRATES, NULL, ¶m,
+ find_different_mode_callback);
+ ok(hr == DD_OK, "EnumDisplayModes failed, hr %#x.\n", hr);
+ if (!param.new_frequency)
+ {
+ skip("Failed to find a display mode with a different frequency.\n");
+ goto done;
+ }
+
+ hr = IDirectDraw4_SetDisplayMode(ddraw, param.new_width, param.new_height, param.new_bpp,
+ param.new_frequency, 0);
+ ok(hr == DD_OK, "SetDisplayMode failed, hr %#x.\n", hr);
+ hr = IDirectDraw4_GetDisplayMode(ddraw, &surface_desc);
+ ok(hr == DD_OK, "GetDisplayMode failed, hr %#x.\n", hr);
+ ok(surface_desc.dwWidth == param.new_width, "Expected width %u, got %u.\n", param.new_width,
+ surface_desc.dwWidth);
+ ok(surface_desc.dwHeight == param.new_height, "Expected height %u, got %u.\n", param.new_height,
+ surface_desc.dwHeight);
+ todo_wine
+ ok(surface_desc.dwRefreshRate == param.new_frequency, "Expected frequency %u, got %u.\n",
+ param.new_frequency, surface_desc.dwRefreshRate);
+ ok(surface_desc.ddpfPixelFormat.dwRGBBitCount == param.new_bpp,
+ "Expected ddpfPixelFormat.dwRGBBitCount %u, got %u.\n", devmode.dmBitsPerPel,
+ surface_desc.ddpfPixelFormat.dwRGBBitCount);
+
+done:
+ DestroyWindow(window);
+ IDirectDraw4_Release(ddraw);
}
START_TEST(ddraw4)
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 5ea81903c47..0f87d46ec09 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -17818,8 +17818,11 @@ struct find_different_mode_param
{
unsigned int old_width;
unsigned int old_height;
+ unsigned int old_frequency;
unsigned int new_width;
unsigned int new_height;
+ unsigned int new_frequency;
+ unsigned int new_bpp;
};
static HRESULT CALLBACK find_different_mode_callback(DDSURFACEDESC2 *surface_desc, void *context)
@@ -17829,10 +17832,13 @@ static HRESULT CALLBACK find_different_mode_callback(DDSURFACEDESC2 *surface_des
if (U1(U4(*surface_desc).ddpfPixelFormat).dwRGBBitCount != registry_mode.dmBitsPerPel)
return DDENUMRET_OK;
- if (surface_desc->dwWidth != param->old_width && surface_desc->dwHeight != param->old_height)
+ if (surface_desc->dwWidth != param->old_width && surface_desc->dwHeight != param->old_height &&
+ surface_desc->dwRefreshRate != param->old_frequency)
{
param->new_width = surface_desc->dwWidth;
param->new_height = surface_desc->dwHeight;
+ param->new_frequency = surface_desc->dwRefreshRate;
+ param->new_bpp = surface_desc->ddpfPixelFormat.dwRGBBitCount;
return DDENUMRET_CANCEL;
}
@@ -18045,7 +18051,84 @@ static BOOL CALLBACK test_get_display_mode_cb(HMONITOR monitor, HDC hdc, RECT *m
static void test_get_display_mode(void)
{
+ static const DWORD flags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_REFRESHRATE | DDSD_PIXELFORMAT | DDSD_PITCH;
+ struct find_different_mode_param param;
+ DDSURFACEDESC2 surface_desc;
+ IDirectDraw7 *ddraw;
+ DEVMODEW devmode;
+ HWND window;
+ HRESULT hr;
+ BOOL ret;
+
EnumDisplayMonitors(NULL, NULL, test_get_display_mode_cb, 0);
+
+ ddraw = create_ddraw();
+ ok(!!ddraw, "Failed to create a ddraw object.\n");
+ window = create_window();
+ ok(!!window, "Failed to create a window.\n");
+
+ hr = IDirectDraw7_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+ ok(hr == DD_OK, "SetCooperativeLevel failed, hr %#x.\n", hr);
+
+ memset(&devmode, 0, sizeof(devmode));
+ devmode.dmSize = sizeof(devmode);
+ ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode);
+ ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
+
+ surface_desc.dwSize = sizeof(surface_desc);
+ hr = IDirectDraw7_GetDisplayMode(ddraw, &surface_desc);
+ ok(hr == DD_OK, "GetDisplayMode failed, hr %#x.\n", hr);
+ ok(surface_desc.dwSize == sizeof(surface_desc), "Expected dwSize %u, got %u.\n",
+ sizeof(surface_desc), surface_desc.dwSize);
+ ok(surface_desc.dwFlags == flags, "Expected dwFlags %#x, got %#x.\n", flags,
+ surface_desc.dwFlags);
+ ok(surface_desc.dwWidth == devmode.dmPelsWidth, "Expected width %u, got %u.\n",
+ devmode.dmPelsWidth, surface_desc.dwWidth);
+ ok(surface_desc.dwHeight == devmode.dmPelsHeight, "Expected height %u, got %u.\n",
+ devmode.dmPelsHeight, surface_desc.dwHeight);
+ todo_wine_if(devmode.dmDisplayFrequency != 60)
+ ok(surface_desc.dwRefreshRate == devmode.dmDisplayFrequency, "Expected frequency %u, got %u.\n",
+ devmode.dmDisplayFrequency, surface_desc.dwRefreshRate);
+ ok(surface_desc.ddpfPixelFormat.dwSize == sizeof(surface_desc.ddpfPixelFormat),
+ "Expected ddpfPixelFormat.dwSize %u, got %u.\n", sizeof(surface_desc.ddpfPixelFormat),
+ surface_desc.ddpfPixelFormat.dwSize);
+ ok(surface_desc.ddpfPixelFormat.dwRGBBitCount == devmode.dmBitsPerPel,
+ "Expected ddpfPixelFormat.dwRGBBitCount %u, got %u.\n", devmode.dmBitsPerPel,
+ surface_desc.ddpfPixelFormat.dwRGBBitCount);
+ ok(surface_desc.lPitch == devmode.dmPelsWidth * devmode.dmBitsPerPel / 8,
+ "Expected pitch %u, got %u.\n", devmode.dmPelsWidth * devmode.dmBitsPerPel / 8,
+ surface_desc.lPitch);
+
+ memset(¶m, 0, sizeof(param));
+ param.old_frequency = surface_desc.dwRefreshRate;
+ hr = IDirectDraw7_EnumDisplayModes(ddraw, DDEDM_REFRESHRATES, NULL, ¶m,
+ find_different_mode_callback);
+ ok(hr == DD_OK, "EnumDisplayModes failed, hr %#x.\n", hr);
+ if (!param.new_frequency)
+ {
+ skip("Failed to find a display mode with a different frequency.\n");
+ goto done;
+ }
+
+ hr = IDirectDraw7_SetDisplayMode(ddraw, param.new_width, param.new_height, param.new_bpp,
+ param.new_frequency, 0);
+ ok(hr == DD_OK, "SetDisplayMode failed, hr %#x.\n", hr);
+ hr = IDirectDraw7_GetDisplayMode(ddraw, &surface_desc);
+ ok(hr == DD_OK, "GetDisplayMode failed, hr %#x.\n", hr);
+ ok(surface_desc.dwWidth == param.new_width, "Expected width %u, got %u.\n", param.new_width,
+ surface_desc.dwWidth);
+ ok(surface_desc.dwHeight == param.new_height, "Expected height %u, got %u.\n", param.new_height,
+ surface_desc.dwHeight);
+ todo_wine
+ ok(surface_desc.dwRefreshRate == param.new_frequency, "Expected frequency %u, got %u.\n",
+ param.new_frequency, surface_desc.dwRefreshRate);
+ ok(surface_desc.ddpfPixelFormat.dwRGBBitCount == param.new_bpp,
+ "Expected ddpfPixelFormat.dwRGBBitCount %u, got %u.\n", devmode.dmBitsPerPel,
+ surface_desc.ddpfPixelFormat.dwRGBBitCount);
+
+done:
+ DestroyWindow(window);
+ IDirectDraw7_Release(ddraw);
}
START_TEST(ddraw7)
--
2.25.1