From 2a0f704d9b165959223a9da91edf4df76860b893 Mon Sep 17 00:00:00 2001 From: Alex Henrie Date: Wed, 27 Dec 2017 17:30:15 +0100 Subject: [PATCH] ddraw/tests: Recognise E_NOTIMPL returned from UpdateOverlay() on VMware as broken. Signed-off-by: Alex Henrie Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/ddraw/tests/ddraw1.c | 12 +++++++++++- dlls/ddraw/tests/ddraw2.c | 12 +++++++++++- dlls/ddraw/tests/ddraw4.c | 12 +++++++++++- dlls/ddraw/tests/ddraw7.c | 12 +++++++++++- 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c index db54abd4165..2c4410af783 100644 --- a/dlls/ddraw/tests/ddraw1.c +++ b/dlls/ddraw/tests/ddraw1.c @@ -123,6 +123,15 @@ static BOOL ddraw_is_intel(IDirectDraw *ddraw) && identifier.dwVendorId == 0x8086; } +static BOOL ddraw_is_vmware(IDirectDraw *ddraw) +{ + DDDEVICEIDENTIFIER identifier; + + return strcmp(winetest_platform, "wine") + && ddraw_get_identifier(ddraw, &identifier) + && identifier.dwVendorId == 0x15ad; +} + static IDirectDrawSurface *create_overlay(IDirectDraw *ddraw, unsigned int width, unsigned int height, DWORD format) { @@ -8666,7 +8675,8 @@ static void test_offscreen_overlay(void) ok(SUCCEEDED(hr), "Failed to create surface, hr %#x.\n",hr); hr = IDirectDrawSurface_UpdateOverlay(overlay, NULL, offscreen, NULL, DDOVER_SHOW, NULL); - ok(SUCCEEDED(hr) || broken(hr == DDERR_OUTOFCAPS && dwm_enabled()), + ok(SUCCEEDED(hr) || broken(hr == DDERR_OUTOFCAPS && dwm_enabled()) + || broken(hr == E_NOTIMPL && ddraw_is_vmware(ddraw)), "Failed to update overlay, hr %#x.\n", hr); /* Try to overlay the primary with a non-overlay surface. */ diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index d2382d153be..89d0d7e4be3 100644 --- a/dlls/ddraw/tests/ddraw2.c +++ b/dlls/ddraw/tests/ddraw2.c @@ -125,6 +125,15 @@ static BOOL ddraw_is_intel(IDirectDraw2 *ddraw) && identifier.dwVendorId == 0x8086; } +static BOOL ddraw_is_vmware(IDirectDraw2 *ddraw) +{ + DDDEVICEIDENTIFIER identifier; + + return strcmp(winetest_platform, "wine") + && ddraw_get_identifier(ddraw, &identifier) + && identifier.dwVendorId == 0x15ad; +} + static IDirectDrawSurface *create_overlay(IDirectDraw2 *ddraw, unsigned int width, unsigned int height, DWORD format) { @@ -9800,7 +9809,8 @@ static void test_offscreen_overlay(void) ok(SUCCEEDED(hr), "Failed to create surface, hr %#x.\n",hr); hr = IDirectDrawSurface_UpdateOverlay(overlay, NULL, offscreen, NULL, DDOVER_SHOW, NULL); - ok(SUCCEEDED(hr) || broken(hr == DDERR_OUTOFCAPS && dwm_enabled()), + ok(SUCCEEDED(hr) || broken(hr == DDERR_OUTOFCAPS && dwm_enabled()) + || broken(hr == E_NOTIMPL && ddraw_is_vmware(ddraw)), "Failed to update overlay, hr %#x.\n", hr); /* Try to overlay the primary with a non-overlay surface. */ diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index caa3ced1728..fa1178d0361 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -131,6 +131,15 @@ static BOOL ddraw_is_intel(IDirectDraw4 *ddraw) && identifier.dwVendorId == 0x8086; } +static BOOL ddraw_is_vmware(IDirectDraw4 *ddraw) +{ + DDDEVICEIDENTIFIER identifier; + + return strcmp(winetest_platform, "wine") + && ddraw_get_identifier(ddraw, &identifier) + && identifier.dwVendorId == 0x15ad; +} + static IDirectDrawSurface4 *create_overlay(IDirectDraw4 *ddraw, unsigned int width, unsigned int height, DWORD format) { @@ -11262,7 +11271,8 @@ static void test_offscreen_overlay(void) ok(SUCCEEDED(hr), "Failed to create surface, hr %#x.\n",hr); hr = IDirectDrawSurface4_UpdateOverlay(overlay, NULL, offscreen, NULL, DDOVER_SHOW, NULL); - ok(SUCCEEDED(hr) || broken(hr == DDERR_OUTOFCAPS && dwm_enabled()), + ok(SUCCEEDED(hr) || broken(hr == DDERR_OUTOFCAPS && dwm_enabled()) + || broken(hr == E_NOTIMPL && ddraw_is_vmware(ddraw)), "Failed to update overlay, hr %#x.\n", hr); /* Try to overlay the primary with a non-overlay surface. */ diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index f1568bb9d07..fdfac696cfc 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -145,6 +145,15 @@ static BOOL ddraw_is_intel(IDirectDraw7 *ddraw) && identifier.dwVendorId == 0x8086; } +static BOOL ddraw_is_vmware(IDirectDraw7 *ddraw) +{ + DDDEVICEIDENTIFIER2 identifier; + + return strcmp(winetest_platform, "wine") + && ddraw_get_identifier(ddraw, &identifier) + && identifier.dwVendorId == 0x15ad; +} + static IDirectDrawSurface7 *create_overlay(IDirectDraw7 *ddraw, unsigned int width, unsigned int height, DWORD format) { @@ -11220,7 +11229,8 @@ static void test_offscreen_overlay(void) ok(SUCCEEDED(hr), "Failed to create surface, hr %#x.\n",hr); hr = IDirectDrawSurface7_UpdateOverlay(overlay, NULL, offscreen, NULL, DDOVER_SHOW, NULL); - ok(SUCCEEDED(hr) || broken(hr == DDERR_OUTOFCAPS && dwm_enabled()), + ok(SUCCEEDED(hr) || broken(hr == DDERR_OUTOFCAPS && dwm_enabled()) + || broken(hr == E_NOTIMPL && ddraw_is_vmware(ddraw)), "Failed to update overlay, hr %#x.\n", hr); /* Try to overlay the primary with a non-overlay surface. */ -- 2.11.4.GIT