Michael Muller : ddraw: Properly set DDCAPS.ddsOldCaps in ddraw7_GetCaps() .
Alexandre Julliard
julliard at winehq.org
Tue Jun 11 16:54:06 CDT 2019
Module: wine
Branch: master
Commit: 50dfd232a4f2052b767a96e7dd8ec186d15fbe69
URL: https://source.winehq.org/git/wine.git/?a=commit;h=50dfd232a4f2052b767a96e7dd8ec186d15fbe69
Author: Michael Muller <michael at fds-team.de>
Date: Mon Jun 10 23:54:22 2019 +0430
ddraw: Properly set DDCAPS.ddsOldCaps in ddraw7_GetCaps().
Signed-off-by: David Adam <david.adam.cnrs at gmail.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ddraw/ddraw.c | 2 ++
dlls/ddraw/tests/ddraw1.c | 26 ++++++++++++++++++++++++++
dlls/ddraw/tests/ddraw2.c | 25 +++++++++++++++++++++++++
dlls/ddraw/tests/ddraw4.c | 26 ++++++++++++++++++++++++++
dlls/ddraw/tests/ddraw7.c | 26 ++++++++++++++++++++++++++
5 files changed, 105 insertions(+)
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 04a94b6..8dce5ce 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -1510,6 +1510,8 @@ static HRESULT WINAPI ddraw7_GetCaps(IDirectDraw7 *iface, DDCAPS *DriverCaps, DD
caps.dwCaps |= DDCAPS_ALIGNSTRIDE;
caps.dwAlignStrideAlign = DDRAW_STRIDE_ALIGNMENT;
+ caps.ddsOldCaps.dwCaps = caps.ddsCaps.dwCaps;
+
if(DriverCaps)
{
DD_STRUCT_COPY_BYSIZE(DriverCaps, &caps);
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index 68428e2..860e101 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -12874,6 +12874,31 @@ static void test_clipper_refcount(void)
DestroyWindow(window);
}
+static void test_caps(void)
+{
+ DDCAPS hal_caps, hel_caps;
+ IDirectDraw *ddraw;
+ HRESULT hr;
+
+ ddraw = create_ddraw();
+ ok(!!ddraw, "Failed to create a ddraw object.\n");
+
+ memset(&hal_caps, 0, sizeof(hal_caps));
+ memset(&hel_caps, 0, sizeof(hel_caps));
+ hal_caps.dwSize = sizeof(hal_caps);
+ hel_caps.dwSize = sizeof(hel_caps);
+ hr = IDirectDraw_GetCaps(ddraw, &hal_caps, &hel_caps);
+ ok(hr == DD_OK, "Got unexpected hr %#x.\n", hr);
+ ok(hal_caps.ddsOldCaps.dwCaps == hal_caps.ddsCaps.dwCaps,
+ "Got unexpected caps %#x, expected %#x.\n",
+ hal_caps.ddsOldCaps.dwCaps, hal_caps.ddsCaps.dwCaps);
+ ok(hel_caps.ddsOldCaps.dwCaps == hel_caps.ddsCaps.dwCaps,
+ "Got unexpected caps %#x, expected %#x.\n",
+ hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
+
+ IDirectDraw_Release(ddraw);
+}
+
START_TEST(ddraw1)
{
DDDEVICEIDENTIFIER identifier;
@@ -12984,4 +13009,5 @@ START_TEST(ddraw1)
test_gdi_surface();
test_alphatest();
test_clipper_refcount();
+ test_caps();
}
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index d056949..2c047a5 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -13750,6 +13750,30 @@ static void test_clipper_refcount(void)
DestroyWindow(window);
}
+static void test_caps(void)
+{
+ DDCAPS hal_caps, hel_caps;
+ IDirectDraw2 *ddraw;
+ HRESULT hr;
+
+ ddraw = create_ddraw();
+ ok(!!ddraw, "Failed to create a ddraw object.\n");
+
+ memset(&hal_caps, 0, sizeof(hal_caps));
+ memset(&hel_caps, 0, sizeof(hel_caps));
+ hal_caps.dwSize = sizeof(hal_caps);
+ hel_caps.dwSize = sizeof(hel_caps);
+ hr = IDirectDraw2_GetCaps(ddraw, &hal_caps, &hel_caps);
+ ok(hr == DD_OK, "Got unexpected hr %#x.\n", hr);
+ ok(hal_caps.ddsOldCaps.dwCaps == hal_caps.ddsCaps.dwCaps,
+ "Got unexpected caps %#x, expected %#x.\n",
+ hal_caps.ddsOldCaps.dwCaps, hal_caps.ddsCaps.dwCaps);
+ ok(hel_caps.ddsOldCaps.dwCaps == hel_caps.ddsCaps.dwCaps,
+ "Got unexpected caps %#x, expected %#x.\n",
+ hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
+
+ IDirectDraw2_Release(ddraw);
+}
START_TEST(ddraw2)
{
@@ -13868,4 +13892,5 @@ START_TEST(ddraw2)
test_gdi_surface();
test_alphatest();
test_clipper_refcount();
+ test_caps();
}
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index 823af43..fa6cca6 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -16170,6 +16170,31 @@ static void test_clipper_refcount(void)
DestroyWindow(window);
}
+static void test_caps(void)
+{
+ DDCAPS hal_caps, hel_caps;
+ IDirectDraw4 *ddraw;
+ HRESULT hr;
+
+ ddraw = create_ddraw();
+ ok(!!ddraw, "Failed to create a ddraw object.\n");
+
+ memset(&hal_caps, 0, sizeof(hal_caps));
+ memset(&hel_caps, 0, sizeof(hel_caps));
+ hal_caps.dwSize = sizeof(hal_caps);
+ hel_caps.dwSize = sizeof(hel_caps);
+ hr = IDirectDraw4_GetCaps(ddraw, &hal_caps, &hel_caps);
+ ok(hr == DD_OK, "Got unexpected hr %#x.\n", hr);
+ ok(hal_caps.ddsOldCaps.dwCaps == hal_caps.ddsCaps.dwCaps,
+ "Got unexpected caps %#x, expected %#x.\n",
+ hal_caps.ddsOldCaps.dwCaps, hal_caps.ddsCaps.dwCaps);
+ ok(hel_caps.ddsOldCaps.dwCaps == hel_caps.ddsCaps.dwCaps,
+ "Got unexpected caps %#x, expected %#x.\n",
+ hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
+
+ IDirectDraw4_Release(ddraw);
+}
+
START_TEST(ddraw4)
{
DDDEVICEIDENTIFIER identifier;
@@ -16302,4 +16327,5 @@ START_TEST(ddraw4)
test_gdi_surface();
test_alphatest();
test_clipper_refcount();
+ test_caps();
}
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index e8c36dc..b0fc634 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -16264,6 +16264,31 @@ static void test_begin_end_state_block(void)
DestroyWindow(window);
}
+static void test_caps(void)
+{
+ DDCAPS hal_caps, hel_caps;
+ IDirectDraw7 *ddraw;
+ HRESULT hr;
+
+ ddraw = create_ddraw();
+ ok(!!ddraw, "Failed to create a ddraw object.\n");
+
+ memset(&hal_caps, 0, sizeof(hal_caps));
+ memset(&hel_caps, 0, sizeof(hel_caps));
+ hal_caps.dwSize = sizeof(hal_caps);
+ hel_caps.dwSize = sizeof(hel_caps);
+ hr = IDirectDraw7_GetCaps(ddraw, &hal_caps, &hel_caps);
+ ok(hr == DD_OK, "Got unexpected hr %#x.\n", hr);
+ ok(hal_caps.ddsOldCaps.dwCaps == hal_caps.ddsCaps.dwCaps,
+ "Got unexpected caps %#x, expected %#x.\n",
+ hal_caps.ddsOldCaps.dwCaps, hal_caps.ddsCaps.dwCaps);
+ ok(hel_caps.ddsOldCaps.dwCaps == hel_caps.ddsCaps.dwCaps,
+ "Got unexpected caps %#x, expected %#x.\n",
+ hel_caps.ddsOldCaps.dwCaps, hel_caps.ddsCaps.dwCaps);
+
+ IDirectDraw7_Release(ddraw);
+}
+
START_TEST(ddraw7)
{
DDDEVICEIDENTIFIER2 identifier;
@@ -16410,4 +16435,5 @@ START_TEST(ddraw7)
test_alphatest();
test_clipper_refcount();
test_begin_end_state_block();
+ test_caps();
}
More information about the wine-cvs
mailing list