Conor McCarthy : dxgi/tests: Mark as todo the containing output test if a secondary monitor will cause failure.
Alexandre Julliard
julliard at winehq.org
Mon Oct 21 15:28:38 CDT 2019
Module: wine
Branch: master
Commit: 890428abdca8ef027b81cf805ad740158079117d
URL: https://source.winehq.org/git/wine.git/?a=commit;h=890428abdca8ef027b81cf805ad740158079117d
Author: Conor McCarthy <cmccarthy at codeweavers.com>
Date: Tue Oct 8 14:13:49 2019 +1000
dxgi/tests: Mark as todo the containing output test if a secondary monitor will cause failure.
Prevents test failure and crash until multi-monitor support is improved.
Signed-off-by: Conor McCarthy <cmccarthy at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/dxgi/tests/dxgi.c | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c
index 0f256d4ce2..7a1baa828f 100644
--- a/dlls/dxgi/tests/dxgi.c
+++ b/dlls/dxgi/tests/dxgi.c
@@ -1935,6 +1935,22 @@ done:
DestroyWindow(creation_desc.OutputWindow);
}
+static HMONITOR get_primary_if_right_side_secondary(const DXGI_OUTPUT_DESC *output_desc)
+{
+ HMONITOR primary, secondary;
+ MONITORINFO mi;
+ POINT pt = {0, 0};
+
+ primary = MonitorFromPoint(pt, MONITOR_DEFAULTTONULL);
+ pt.x = output_desc->DesktopCoordinates.right;
+ secondary = MonitorFromPoint(pt, MONITOR_DEFAULTTONULL);
+ mi.cbSize = sizeof(mi);
+ if (secondary && secondary != primary
+ && GetMonitorInfoW(primary, &mi) && (mi.dwFlags & MONITORINFOF_PRIMARY))
+ return primary;
+ return NULL;
+}
+
static void test_get_containing_output(void)
{
unsigned int output_count, output_idx;
@@ -1949,6 +1965,7 @@ static void test_get_containing_output(void)
IDXGIDevice *device;
unsigned int i, j;
HMONITOR monitor;
+ HMONITOR primary;
ULONG refcount;
HRESULT hr;
BOOL ret;
@@ -2031,6 +2048,8 @@ static void test_get_containing_output(void)
wine_dbgstr_rect(&output_desc.DesktopCoordinates),
wine_dbgstr_rect(&monitor_info.rcMonitor));
+ primary = get_primary_if_right_side_secondary(&output_desc);
+
output_idx = 0;
while ((hr = IDXGIAdapter_EnumOutputs(adapter, output_idx, &output)) != DXGI_ERROR_NOT_FOUND)
{
@@ -2113,9 +2132,11 @@ static void test_get_containing_output(void)
ok(ret, "Failed to get monitor info.\n");
hr = IDXGISwapChain_GetContainingOutput(swapchain, &output);
+ /* Hack to prevent test failures with secondary on the right until multi-monitor support is improved. */
+ todo_wine_if(primary && monitor != primary)
ok(hr == S_OK || broken(hr == DXGI_ERROR_UNSUPPORTED),
"Failed to get containing output, hr %#x.\n", hr);
- if (hr == DXGI_ERROR_UNSUPPORTED)
+ if (hr != S_OK)
continue;
ok(!!output, "Got unexpected containing output %p.\n", output);
hr = IDXGIOutput_GetDesc(output, &output_desc);
More information about the wine-cvs
mailing list