Wine-Devel
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 4 participants
- 84544 discussions
Oct. 5, 2020
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/dxgi/swapchain.c | 27 ++++++++++++++++++++++++---
dlls/dxgi/tests/dxgi.c | 3 +--
2 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c
index c8f1502a13a..d778ab9e03d 100644
--- a/dlls/dxgi/swapchain.c
+++ b/dlls/dxgi/swapchain.c
@@ -2981,11 +2981,34 @@ static HRESULT d3d12_swapchain_init(struct d3d12_swapchain *swapchain, IWineDXGI
hr = wined3d_swapchain_desc_from_dxgi(&wined3d_desc, output, window, swapchain_desc,
fullscreen_desc);
- IDXGIOutput_Release(output);
if (FAILED(hr))
+ {
+ IDXGIOutput_Release(output);
return hr;
+ }
+
if (FAILED(hr = wined3d_swapchain_state_create(&wined3d_desc, window, &swapchain->state)))
+ {
+ IDXGIOutput_Release(output);
return hr;
+ }
+
+ if (!fullscreen_desc->Windowed)
+ {
+ hr = wined3d_swapchain_state_set_fullscreen(swapchain->state, &wined3d_desc, NULL);
+ if (FAILED(hr))
+ {
+ wined3d_swapchain_state_destroy(swapchain->state);
+ IDXGIOutput_Release(output);
+ return hr;
+ }
+
+ swapchain->target = output;
+ }
+ else
+ {
+ IDXGIOutput_Release(output);
+ }
if (swapchain_desc->BufferUsage && swapchain_desc->BufferUsage != DXGI_USAGE_RENDER_TARGET_OUTPUT)
FIXME("Ignoring buffer usage %#x.\n", swapchain_desc->BufferUsage);
@@ -3002,8 +3025,6 @@ static HRESULT d3d12_swapchain_init(struct d3d12_swapchain *swapchain, IWineDXGI
FIXME("Unhandled scanline ordering %#x.\n", fullscreen_desc->ScanlineOrdering);
if (fullscreen_desc->Scaling)
FIXME("Unhandled mode scaling %#x.\n", fullscreen_desc->Scaling);
- if (!fullscreen_desc->Windowed)
- FIXME("Fullscreen not supported yet.\n");
vk_instance = vkd3d_instance_get_vk_instance(vkd3d_instance_from_device(device));
vk_physical_device = vkd3d_get_vk_physical_device(device);
diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c
index e6b5a4e66b3..f747e236f31 100644
--- a/dlls/dxgi/tests/dxgi.c
+++ b/dlls/dxgi/tests/dxgi.c
@@ -2953,7 +2953,6 @@ static void test_default_fullscreen_target_output(IUnknown *device, BOOL is_d3d1
ok(SUCCEEDED(hr), "Adapter %u output %u: GetFullscreenState failed, hr %#x.\n",
adapter_idx, output_idx, hr);
ok(fullscreen, "Adapter %u output %u: Expected fullscreen.\n", adapter_idx, output_idx);
- todo_wine_if(is_d3d12)
ok(!!containing_output, "Adapter %u output %u: Expected a valid output.\n", adapter_idx,
output_idx);
if (containing_output)
@@ -2962,7 +2961,7 @@ static void test_default_fullscreen_target_output(IUnknown *device, BOOL is_d3d1
ret = GetWindowRect(swapchain_desc.OutputWindow, &window_rect);
ok(ret, "Adapter %u output %u: GetWindowRect failed, error %#x.\n", adapter_idx,
output_idx, GetLastError());
- todo_wine_if(is_d3d12) ok(EqualRect(&window_rect, &output_desc.DesktopCoordinates),
+ ok(EqualRect(&window_rect, &output_desc.DesktopCoordinates),
"Adapter %u output %u: Expect window rect %s, got %s.\n", adapter_idx,
output_idx, wine_dbgstr_rect(&output_desc.DesktopCoordinates),
wine_dbgstr_rect(&window_rect));
--
2.25.1
3
2
[PATCH 3/5] dxgi/tests: Run test_default_fullscreen_target_output() on d3d12 as well.
by Zhiyi Zhang Oct. 5, 2020
by Zhiyi Zhang Oct. 5, 2020
Oct. 5, 2020
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/dxgi/tests/dxgi.c | 44 ++++++++++++++++++++++++++----------------
1 file changed, 27 insertions(+), 17 deletions(-)
diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c
index dac224f654d..e6b5a4e66b3 100644
--- a/dlls/dxgi/tests/dxgi.c
+++ b/dlls/dxgi/tests/dxgi.c
@@ -2796,7 +2796,7 @@ done:
ok(refcount == !is_d3d12, "Got unexpected refcount %u.\n", refcount);
}
-static void test_default_fullscreen_target_output(void)
+static void test_default_fullscreen_target_output(IUnknown *device, BOOL is_d3d12)
{
IDXGIOutput *output, *containing_output, *target;
unsigned int adapter_idx, output_idx;
@@ -2806,19 +2806,12 @@ static void test_default_fullscreen_target_output(void)
IDXGISwapChain *swapchain;
IDXGIFactory *factory;
IDXGIAdapter *adapter;
- IDXGIDevice *device;
+ BOOL fullscreen, ret;
RECT window_rect;
ULONG refcount;
HRESULT hr;
- BOOL ret;
- if (!(device = create_device(0)))
- {
- skip("Failed to create device.\n");
- return;
- }
-
- get_factory((IUnknown *)device, FALSE, &factory);
+ get_factory(device, is_d3d12, &factory);
swapchain_desc.BufferDesc.RefreshRate.Numerator = 60;
swapchain_desc.BufferDesc.RefreshRate.Denominator = 60;
@@ -2828,8 +2821,8 @@ static void test_default_fullscreen_target_output(void)
swapchain_desc.SampleDesc.Count = 1;
swapchain_desc.SampleDesc.Quality = 0;
swapchain_desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- swapchain_desc.BufferCount = 1;
- swapchain_desc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
+ swapchain_desc.BufferCount = is_d3d12 ? 2 : 1;
+ swapchain_desc.SwapEffect = is_d3d12 ? DXGI_SWAP_EFFECT_FLIP_DISCARD : DXGI_SWAP_EFFECT_DISCARD;
swapchain_desc.Flags = 0;
for (adapter_idx = 0; SUCCEEDED(IDXGIFactory_EnumAdapters(factory, adapter_idx, &adapter));
@@ -2848,6 +2841,14 @@ static void test_default_fullscreen_target_output(void)
ok(SUCCEEDED(hr), "Adapter %u output %u: CreateSwapChain failed, hr %#x.\n",
adapter_idx, output_idx, hr);
+ hr = IDXGISwapChain_GetFullscreenState(swapchain, &fullscreen, &containing_output);
+ ok(SUCCEEDED(hr), "Adapter %u output %u: GetFullscreenState failed, hr %#x.\n",
+ adapter_idx, output_idx, hr);
+ ok(!fullscreen, "Adapter %u output %u: Expected not fullscreen.\n", adapter_idx,
+ output_idx);
+ ok(!containing_output, "Adapter %u output %u: Expected a null output.\n", adapter_idx,
+ output_idx);
+
/* Move the OutputWindow to the current output. */
hr = IDXGIOutput_GetDesc(output, &output_desc);
ok(SUCCEEDED(hr), "Adapter %u output %u: GetDesc failed, hr %#x.\n", adapter_idx,
@@ -2948,10 +2949,20 @@ static void test_default_fullscreen_target_output(void)
continue;
}
+ hr = IDXGISwapChain_GetFullscreenState(swapchain, &fullscreen, &containing_output);
+ ok(SUCCEEDED(hr), "Adapter %u output %u: GetFullscreenState failed, hr %#x.\n",
+ adapter_idx, output_idx, hr);
+ ok(fullscreen, "Adapter %u output %u: Expected fullscreen.\n", adapter_idx, output_idx);
+ todo_wine_if(is_d3d12)
+ ok(!!containing_output, "Adapter %u output %u: Expected a valid output.\n", adapter_idx,
+ output_idx);
+ if (containing_output)
+ IDXGIOutput_Release(containing_output);
+
ret = GetWindowRect(swapchain_desc.OutputWindow, &window_rect);
ok(ret, "Adapter %u output %u: GetWindowRect failed, error %#x.\n", adapter_idx,
output_idx, GetLastError());
- ok(EqualRect(&window_rect, &output_desc.DesktopCoordinates),
+ todo_wine_if(is_d3d12) ok(EqualRect(&window_rect, &output_desc.DesktopCoordinates),
"Adapter %u output %u: Expect window rect %s, got %s.\n", adapter_idx,
output_idx, wine_dbgstr_rect(&output_desc.DesktopCoordinates),
wine_dbgstr_rect(&window_rect));
@@ -2979,10 +2990,8 @@ static void test_default_fullscreen_target_output(void)
IDXGIAdapter_Release(adapter);
}
- refcount = IDXGIDevice_Release(device);
- ok(!refcount, "Device has %u references left.\n", refcount);
refcount = IDXGIFactory_Release(factory);
- ok(!refcount, "Factory has %u references left.\n", refcount);
+ ok(refcount == !is_d3d12, "IDXGIFactory has %u references left.\n", refcount);
}
static void test_windowed_resize_target(IDXGISwapChain *swapchain, HWND window,
@@ -6989,7 +6998,6 @@ START_TEST(dxgi)
/* These tests use full-screen swapchains, so shouldn't run in parallel. */
test_create_swapchain();
- test_default_fullscreen_target_output();
test_inexact_modes();
test_gamma_control();
test_multi_adapter();
@@ -7006,6 +7014,7 @@ START_TEST(dxgi)
run_on_d3d10(test_cursor_clipping);
run_on_d3d10(test_get_containing_output);
run_on_d3d10(test_window_association);
+ run_on_d3d10(test_default_fullscreen_target_output);
if (!(d3d12_module = LoadLibraryA("d3d12.dll")))
{
@@ -7034,6 +7043,7 @@ START_TEST(dxgi)
run_on_d3d12(test_colour_space_support);
run_on_d3d12(test_get_containing_output);
run_on_d3d12(test_window_association);
+ run_on_d3d12(test_default_fullscreen_target_output);
FreeLibrary(d3d12_module);
}
--
2.25.1
2
1
Oct. 5, 2020
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/dxgi/tests/dxgi.c | 37 +++++++++++++------------------------
1 file changed, 13 insertions(+), 24 deletions(-)
diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c
index 2a68947c68e..dac224f654d 100644
--- a/dlls/dxgi/tests/dxgi.c
+++ b/dlls/dxgi/tests/dxgi.c
@@ -6122,15 +6122,13 @@ done:
ok(!refcount, "Factory has %u references left.\n", refcount);
}
-static void test_window_association(void)
+static void test_window_association(IUnknown *device, BOOL is_d3d12)
{
DXGI_SWAP_CHAIN_DESC swapchain_desc;
LONG_PTR original_wndproc, wndproc;
IDXGIFactory *factory, *factory2;
IDXGISwapChain *swapchain;
IDXGIOutput *output;
- IDXGIAdapter *adapter;
- IDXGIDevice *device;
HWND hwnd, hwnd2;
BOOL fullscreen;
unsigned int i;
@@ -6142,6 +6140,7 @@ static void test_window_association(void)
UINT flag;
BOOL expect_fullscreen;
BOOL broken_d3d10;
+ BOOL todo_on_d3d12;
}
tests[] =
{
@@ -6155,24 +6154,18 @@ static void test_window_association(void)
* - Posting them hangs the posting thread. Another thread that keeps
* sending input is needed to avoid the hang. The hang is not
* because of flush_events(). */
- {0, TRUE},
+ {0, TRUE, FALSE, TRUE},
{0, FALSE},
{DXGI_MWA_NO_WINDOW_CHANGES, FALSE},
{DXGI_MWA_NO_WINDOW_CHANGES, FALSE},
{DXGI_MWA_NO_ALT_ENTER, FALSE, TRUE},
{DXGI_MWA_NO_ALT_ENTER, FALSE},
- {DXGI_MWA_NO_PRINT_SCREEN, TRUE},
+ {DXGI_MWA_NO_PRINT_SCREEN, TRUE, FALSE, TRUE},
{DXGI_MWA_NO_PRINT_SCREEN, FALSE},
- {0, TRUE},
+ {0, TRUE, FALSE, TRUE},
{0, FALSE}
};
- if (!(device = create_device(0)))
- {
- skip("Failed to create device.\n");
- return;
- }
-
swapchain_desc.BufferDesc.Width = 640;
swapchain_desc.BufferDesc.Height = 480;
swapchain_desc.BufferDesc.RefreshRate.Numerator = 60;
@@ -6183,10 +6176,10 @@ static void test_window_association(void)
swapchain_desc.SampleDesc.Count = 1;
swapchain_desc.SampleDesc.Quality = 0;
swapchain_desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- swapchain_desc.BufferCount = 1;
+ swapchain_desc.BufferCount = is_d3d12 ? 2 : 1;
swapchain_desc.OutputWindow = CreateWindowA("static", "dxgi_test", 0, 0, 0, 400, 200, 0, 0, 0, 0);
swapchain_desc.Windowed = TRUE;
- swapchain_desc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
+ swapchain_desc.SwapEffect = is_d3d12 ? DXGI_SWAP_EFFECT_FLIP_DISCARD : DXGI_SWAP_EFFECT_DISCARD;
swapchain_desc.Flags = 0;
original_wndproc = GetWindowLongPtrW(swapchain_desc.OutputWindow, GWLP_WNDPROC);
@@ -6195,11 +6188,7 @@ static void test_window_association(void)
hr = CreateDXGIFactory(&IID_IDXGIFactory, (void **)&factory2);
ok(hr == S_OK, "Failed to create DXGI factory, hr %#x.\n", hr);
- hr = IDXGIDevice_GetAdapter(device, &adapter);
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
- hr = IDXGIAdapter_GetParent(adapter, &IID_IDXGIFactory, (void **)&factory);
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
- refcount = IDXGIAdapter_Release(adapter);
+ get_factory(device, is_d3d12, &factory);
hr = IDXGIFactory_GetWindowAssociation(factory, NULL);
ok(hr == DXGI_ERROR_INVALID_CALL, "Got unexpected hr %#x.\n", hr);
@@ -6229,7 +6218,7 @@ static void test_window_association(void)
ok(hr == DXGI_ERROR_INVALID_CALL, "Got unexpected hr %#x.\n", hr);
/* Alt+Enter tests. */
- hr = IDXGIFactory_CreateSwapChain(factory, (IUnknown *)device, &swapchain_desc, &swapchain);
+ hr = IDXGIFactory_CreateSwapChain(factory, device, &swapchain_desc, &swapchain);
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
wndproc = GetWindowLongPtrW(swapchain_desc.OutputWindow, GWLP_WNDPROC);
@@ -6275,6 +6264,7 @@ static void test_window_association(void)
output = NULL;
hr = IDXGISwapChain_GetFullscreenState(swapchain, &fullscreen, &output);
ok(hr == S_OK, "Test %u: Got unexpected hr %#x.\n", i, hr);
+ todo_wine_if(is_d3d12 && tests[i].todo_on_d3d12)
ok(fullscreen == tests[i].expect_fullscreen
|| broken(tests[i].broken_d3d10 && fullscreen),
"Test %u: Got unexpected fullscreen %#x.\n", i, fullscreen);
@@ -6299,10 +6289,8 @@ static void test_window_association(void)
ok(!refcount, "IDXGISwapChain has %u references left.\n", refcount);
DestroyWindow(swapchain_desc.OutputWindow);
- refcount = IDXGIDevice_Release(device);
- ok(!refcount, "Device has %u references left.\n", refcount);
refcount = IDXGIFactory_Release(factory);
- ok(!refcount, "Factory has %u references left.\n", refcount);
+ ok(refcount == !is_d3d12, "IDXGIFactory has %u references left.\n", refcount);
}
static void test_output_ownership(IUnknown *device, BOOL is_d3d12)
@@ -7008,7 +6996,6 @@ START_TEST(dxgi)
test_swapchain_parameters();
test_swapchain_window_messages();
test_swapchain_window_styles();
- test_window_association();
run_on_d3d10(test_set_fullscreen);
run_on_d3d10(test_resize_target);
run_on_d3d10(test_swapchain_resize);
@@ -7018,6 +7005,7 @@ START_TEST(dxgi)
run_on_d3d10(test_output_ownership);
run_on_d3d10(test_cursor_clipping);
run_on_d3d10(test_get_containing_output);
+ run_on_d3d10(test_window_association);
if (!(d3d12_module = LoadLibraryA("d3d12.dll")))
{
@@ -7045,6 +7033,7 @@ START_TEST(dxgi)
run_on_d3d12(test_frame_latency_event);
run_on_d3d12(test_colour_space_support);
run_on_d3d12(test_get_containing_output);
+ run_on_d3d12(test_window_association);
FreeLibrary(d3d12_module);
}
--
2.25.1
3
2
[PATCH 1/5] dxgi/tests: Run test_get_containing_output() on d3d12 as well.
by Zhiyi Zhang Oct. 5, 2020
by Zhiyi Zhang Oct. 5, 2020
Oct. 5, 2020
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/dxgi/tests/dxgi.c | 46 ++++++++++++++++++------------------------
1 file changed, 20 insertions(+), 26 deletions(-)
diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c
index a34f574236e..2a68947c68e 100644
--- a/dlls/dxgi/tests/dxgi.c
+++ b/dlls/dxgi/tests/dxgi.c
@@ -2123,7 +2123,7 @@ static HMONITOR get_primary_if_right_side_secondary(const DXGI_OUTPUT_DESC *outp
return NULL;
}
-static void test_get_containing_output(void)
+static void test_get_containing_output(IUnknown *device, BOOL is_d3d12)
{
unsigned int adapter_idx, output_idx, output_count;
DXGI_OUTPUT_DESC output_desc, output_desc2;
@@ -2134,7 +2134,6 @@ static void test_get_containing_output(void)
IDXGIFactory *factory;
IDXGIAdapter *adapter;
POINT points[4 * 16];
- IDXGIDevice *device;
unsigned int i, j;
HMONITOR monitor;
HMONITOR primary;
@@ -2143,17 +2142,21 @@ static void test_get_containing_output(void)
HRESULT hr;
BOOL ret;
- if (!(device = create_device(0)))
+ adapter = get_adapter(device, is_d3d12);
+ if (!adapter)
{
- skip("Failed to create device.\n");
+ skip("Failed to get adapter on Direct3D %d.\n", is_d3d12 ? 12 : 10);
return;
}
- hr = IDXGIDevice_GetAdapter(device, &adapter);
- ok(SUCCEEDED(hr), "GetAdapter failed, hr %#x.\n", hr);
-
- hr = IDXGIAdapter_GetParent(adapter, &IID_IDXGIFactory, (void **)&factory);
- ok(SUCCEEDED(hr), "GetParent failed, hr %#x.\n", hr);
+ output_count = 0;
+ while ((hr = IDXGIAdapter_EnumOutputs(adapter, output_count, &output)) != DXGI_ERROR_NOT_FOUND)
+ {
+ ok(SUCCEEDED(hr), "Failed to enumerate output %u, hr %#x.\n", output_count, hr);
+ IDXGIOutput_Release(output);
+ ++output_count;
+ }
+ IDXGIAdapter_Release(adapter);
swapchain_desc.BufferDesc.Width = 100;
swapchain_desc.BufferDesc.Height = 100;
@@ -2165,23 +2168,15 @@ static void test_get_containing_output(void)
swapchain_desc.SampleDesc.Count = 1;
swapchain_desc.SampleDesc.Quality = 0;
swapchain_desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- swapchain_desc.BufferCount = 1;
+ swapchain_desc.BufferCount = is_d3d12 ? 2 : 1;
swapchain_desc.OutputWindow = CreateWindowA("static", "dxgi_test",
WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, 100, 100, 0, 0, 0, 0);
swapchain_desc.Windowed = TRUE;
- swapchain_desc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
+ swapchain_desc.SwapEffect = is_d3d12 ? DXGI_SWAP_EFFECT_FLIP_DISCARD : DXGI_SWAP_EFFECT_DISCARD;
swapchain_desc.Flags = 0;
- output_count = 0;
- while (IDXGIAdapter_EnumOutputs(adapter, output_count, &output) != DXGI_ERROR_NOT_FOUND)
- {
- ok(SUCCEEDED(hr), "Failed to enumerate output %u, hr %#x.\n", output_count, hr);
- IDXGIOutput_Release(output);
- ++output_count;
- }
- IDXGIAdapter_Release(adapter);
-
- hr = IDXGIFactory_CreateSwapChain(factory, (IUnknown *)device, &swapchain_desc, &swapchain);
+ get_factory(device, is_d3d12, &factory);
+ hr = IDXGIFactory_CreateSwapChain(factory, device, &swapchain_desc, &swapchain);
ok(SUCCEEDED(hr), "CreateSwapChain failed, hr %#x.\n", hr);
monitor = MonitorFromWindow(swapchain_desc.OutputWindow, 0);
@@ -2436,7 +2431,7 @@ static void test_get_containing_output(void)
flush_events();
hr = IDXGISwapChain_GetFullscreenState(swapchain, &fullscreen, NULL);
ok(hr == S_OK, "GetFullscreenState failed, hr %#x.\n", hr);
- ok(!fullscreen, "Expect swapchain not full screen.\n");
+ todo_wine_if(is_d3d12) ok(!fullscreen, "Expect swapchain not full screen.\n");
/* Move the swapchain output window to the second output */
hr = IDXGIOutput_GetDesc(output2, &output_desc2);
@@ -2490,10 +2485,8 @@ static void test_get_containing_output(void)
done:
refcount = IDXGISwapChain_Release(swapchain);
ok(!refcount, "IDXGISwapChain has %u references left.\n", refcount);
- refcount = IDXGIDevice_Release(device);
- ok(!refcount, "Device has %u references left.\n", refcount);
refcount = IDXGIFactory_Release(factory);
- ok(!refcount, "Factory has %u references left.\n", refcount);
+ ok(refcount == !is_d3d12, "IDXGIFactory has %u references left.\n", refcount);
DestroyWindow(swapchain_desc.OutputWindow);
}
@@ -7011,7 +7004,6 @@ START_TEST(dxgi)
test_default_fullscreen_target_output();
test_inexact_modes();
test_gamma_control();
- test_get_containing_output();
test_multi_adapter();
test_swapchain_parameters();
test_swapchain_window_messages();
@@ -7025,6 +7017,7 @@ START_TEST(dxgi)
run_on_d3d10(test_swapchain_formats);
run_on_d3d10(test_output_ownership);
run_on_d3d10(test_cursor_clipping);
+ run_on_d3d10(test_get_containing_output);
if (!(d3d12_module = LoadLibraryA("d3d12.dll")))
{
@@ -7051,6 +7044,7 @@ START_TEST(dxgi)
run_on_d3d12(test_cursor_clipping);
run_on_d3d12(test_frame_latency_event);
run_on_d3d12(test_colour_space_support);
+ run_on_d3d12(test_get_containing_output);
FreeLibrary(d3d12_module);
}
--
2.25.1
2
1
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49873
Signed-off-by: Gijs Vermeulen <gijsvrm(a)gmail.com>
---
.../api-ms-win-crt-convert-l1-1-0.spec | 2 +-
.../api-ms-win-crt-private-l1-1-0.spec | 2 +-
dlls/msvcr120/msvcr120.spec | 2 +-
dlls/msvcr120_app/msvcr120_app.spec | 2 +-
dlls/msvcrt/string.c | 13 +++++++++++++
dlls/ucrtbase/ucrtbase.spec | 4 ++--
6 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/dlls/api-ms-win-crt-convert-l1-1-0/api-ms-win-crt-convert-l1-1-0.spec b/dlls/api-ms-win-crt-convert-l1-1-0/api-ms-win-crt-convert-l1-1-0.spec
index a67828e6d22..f3585ccf3b0 100644
--- a/dlls/api-ms-win-crt-convert-l1-1-0/api-ms-win-crt-convert-l1-1-0.spec
+++ b/dlls/api-ms-win-crt-convert-l1-1-0/api-ms-win-crt-convert-l1-1-0.spec
@@ -96,7 +96,7 @@
@ cdecl strtof(str ptr) ucrtbase.strtof
@ cdecl -ret64 strtoimax(str ptr long) ucrtbase.strtoimax
@ cdecl strtol(str ptr long) ucrtbase.strtol
-@ stub strtold
+@ cdecl strtold(str ptr) ucrtbase.strtold
@ cdecl -ret64 strtoll(str ptr long) ucrtbase.strtoll
@ cdecl strtoul(str ptr long) ucrtbase.strtoul
@ cdecl -ret64 strtoull(str ptr long) ucrtbase.strtoull
diff --git a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec
index 87dc6585f3c..fe5d0c4b11d 100644
--- a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec
+++ b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec
@@ -1126,7 +1126,7 @@
@ cdecl _o_strtok(str str) ucrtbase._o_strtok
@ cdecl _o_strtok_s(ptr str ptr) ucrtbase._o_strtok_s
@ cdecl _o_strtol(str ptr long) ucrtbase._o_strtol
-@ stub _o_strtold
+@ cdecl _o_strtold(str ptr) ucrtbase._o_strtold
@ cdecl -ret64 _o_strtoll(str ptr long) ucrtbase._o_strtoll
@ cdecl _o_strtoul(str ptr long) ucrtbase._o_strtoul
@ cdecl -ret64 _o_strtoull(str ptr long) ucrtbase._o_strtoull
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index 0d38f97fffe..3a45084d8b0 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -2391,7 +2391,7 @@
@ cdecl strtok(str str) MSVCRT_strtok
@ cdecl strtok_s(ptr str ptr) MSVCRT_strtok_s
@ cdecl strtol(str ptr long) MSVCRT_strtol
-@ stub strtold
+@ cdecl strtold(str ptr) MSVCRT_strtold
@ cdecl -ret64 strtoll(str ptr long) MSVCRT_strtoi64
@ cdecl strtoul(str ptr long) MSVCRT_strtoul
@ cdecl -ret64 strtoull(str ptr long) MSVCRT_strtoui64
diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec
index 2013b06cc7c..a50697c5e41 100644
--- a/dlls/msvcr120_app/msvcr120_app.spec
+++ b/dlls/msvcr120_app/msvcr120_app.spec
@@ -2054,7 +2054,7 @@
@ cdecl strtok(str str) msvcr120.strtok
@ cdecl strtok_s(ptr str ptr) msvcr120.strtok_s
@ cdecl strtol(str ptr long) msvcr120.strtol
-@ stub strtold
+@ cdecl strtold(str ptr) msvcr120.strtold
@ cdecl -ret64 strtoll(str ptr long) msvcr120.strtoll
@ cdecl strtoul(str ptr long) msvcr120.strtoul
@ cdecl -ret64 strtoull(str ptr long) msvcr120.strtoull
diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c
index 3343f1e3ccf..abf1c867a16 100644
--- a/dlls/msvcrt/string.c
+++ b/dlls/msvcrt/string.c
@@ -1058,6 +1058,19 @@ double CDECL MSVCRT_strtod( const char *str, char **end )
#if _MSVCR_VER>=120
+/*********************************************************************
+ * strtold (MSVCR120.@)
+ */
+long double CDECL MSVCRT_strtold( const char *str, char **end )
+{
+#ifdef HAVE_STRTOLD
+ return strtold( str, end );
+#else
+ FIXME( "strtold not available!\n" );
+ return 0;
+#endif
+}
+
/*********************************************************************
* strtof_l (MSVCR120.@)
*/
diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec
index f556b9e1c3d..18afedfdf5b 100644
--- a/dlls/ucrtbase/ucrtbase.spec
+++ b/dlls/ucrtbase/ucrtbase.spec
@@ -1791,7 +1791,7 @@
@ cdecl _o_strtok(str str) MSVCRT_strtok
@ cdecl _o_strtok_s(ptr str ptr) MSVCRT_strtok_s
@ cdecl _o_strtol(str ptr long) MSVCRT_strtol
-@ stub _o_strtold
+@ cdecl _o_strtold(str ptr) MSVCRT_strtold
@ cdecl -ret64 _o_strtoll(str ptr long) MSVCRT_strtoi64
@ cdecl _o_strtoul(str ptr long) MSVCRT_strtoul
@ cdecl -ret64 _o_strtoull(str ptr long) MSVCRT_strtoui64
@@ -2522,7 +2522,7 @@
@ cdecl strtok(str str) MSVCRT_strtok
@ cdecl strtok_s(ptr str ptr) MSVCRT_strtok_s
@ cdecl strtol(str ptr long) MSVCRT_strtol
-@ stub strtold
+@ cdecl strtold(str ptr) MSVCRT_strtold
@ cdecl -ret64 strtoll(str ptr long) MSVCRT_strtoi64
@ cdecl strtoul(str ptr long) MSVCRT_strtoul
@ cdecl -ret64 strtoull(str ptr long) MSVCRT_strtoui64
--
2.28.0
2
1
Oct. 5, 2020
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/msxml3/tests/httpreq.c | 7 +-
dlls/msxml3/tests/saxreader.c | 158 ++++++++++++++--------------------
dlls/msxml3/tests/schema.c | 21 ++---
dlls/msxml3/tests/xmldoc.c | 79 +++++++----------
dlls/msxml3/tests/xmlview.c | 16 ++--
5 files changed, 110 insertions(+), 171 deletions(-)
diff --git a/dlls/msxml3/tests/httpreq.c b/dlls/msxml3/tests/httpreq.c
index 74c302d5ebe..5f5137dd166 100644
--- a/dlls/msxml3/tests/httpreq.c
+++ b/dlls/msxml3/tests/httpreq.c
@@ -1444,8 +1444,6 @@ static void test_XMLHTTP(void)
static const char bodyA[] = "mode=Test";
static const char urlA[] = "http://test.winehq.org/tests/post.php";
static const char referertesturl[] = "http://test.winehq.org/tests/referer.php";
- static const WCHAR wszExpectedResponse[] = {'F','A','I','L','E','D',0};
- static const WCHAR norefererW[] = {'n','o',' ','r','e','f','e','r','e','r',' ','s','e','t',0};
IXMLHttpRequest *xhr;
IObjectWithSite *obj_site, *obj_site2;
@@ -1631,8 +1629,7 @@ static void test_XMLHTTP(void)
* not what the server expects */
if(hr == S_OK)
{
- ok(!memcmp(bstrResponse, wszExpectedResponse, sizeof(wszExpectedResponse)),
- "expected %s, got %s\n", wine_dbgstr_w(wszExpectedResponse), wine_dbgstr_w(bstrResponse));
+ ok(!memcmp(bstrResponse, L"FAILED", 7 * sizeof(WCHAR)), "Unexpected response %s.\n", wine_dbgstr_w(bstrResponse));
SysFreeString(bstrResponse);
}
@@ -1713,7 +1710,7 @@ static void test_XMLHTTP(void)
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = IXMLHttpRequest_get_responseText(xhr, &str);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(str, norefererW), "got response text %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"no referer set"), "got response text %s\n", wine_dbgstr_w(str));
SysFreeString(str);
/* interaction with object site */
diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c
index 986f429cc1b..47d158ab3ea 100644
--- a/dlls/msxml3/tests/saxreader.c
+++ b/dlls/msxml3/tests/saxreader.c
@@ -36,8 +36,6 @@
#include "wine/heap.h"
#include "wine/test.h"
-static const WCHAR emptyW[] = {0};
-
#define EXPECT_HR(hr,hr_exp) \
ok(hr == hr_exp, "got 0x%08x, expected 0x%08x\n", hr, hr_exp)
@@ -537,27 +535,22 @@ static void init_call_sequences(struct call_sequence **seq, int n)
seq[i] = heap_alloc_zero(sizeof(struct call_sequence));
}
-static const WCHAR szSimpleXML[] = {
-'<','?','x','m','l',' ','v','e','r','s','i','o','n','=','\"','1','.','0','\"',' ','?','>','\n',
-'<','B','a','n','k','A','c','c','o','u','n','t','>','\n',
-' ',' ',' ','<','N','u','m','b','e','r','>','1','2','3','4','<','/','N','u','m','b','e','r','>','\n',
-' ',' ',' ','<','N','a','m','e','>','C','a','p','t','a','i','n',' ','A','h','a','b','<','/','N','a','m','e','>','\n',
-'<','/','B','a','n','k','A','c','c','o','u','n','t','>','\n','\0'
-};
+static const WCHAR szSimpleXML[] =
-static const WCHAR carriage_ret_test[] = {
-'<','?','x','m','l',' ','v','e','r','s','i','o','n','=','"','1','.','0','"','?','>','\r','\n',
-'<','B','a','n','k','A','c','c','o','u','n','t','>','\r','\n',
-'\t','<','N','u','m','b','e','r','>','1','2','3','4','<','/','N','u','m','b','e','r','>','\r','\n',
-'\t','<','N','a','m','e','>','C','a','p','t','a','i','n',' ','A','h','a','b','<','/','N','a','m','e','>','\r','\n',
-'<','/','B','a','n','k','A','c','c','o','u','n','t','>','\r','\n','\0'
-};
+L"<?xml version=\"1.0\" ?>\n"
+"<BankAccount>\n"
+" <Number>1234</Number>\n"
+" <Name>Captain Ahab</Name>\n"
+"</BankAccount>\n";
-static const WCHAR szUtf16XML[] = {
-'<','?','x','m','l',' ','v','e','r','s','i','o','n','=','"','1','.','0','"',' ',
-'e','n','c','o','d','i','n','g','=','"','U','T','F','-','1','6','"',' ',
-'s','t','a','n','d','a','l','o','n','e','=','"','n','o','"','?','>','\r','\n'
-};
+static const WCHAR carriage_ret_test[] =
+
+L"<?xml version=\"1.0\"?>\r\n"
+"<BankAccount>\r\n\t<Number>1234</Number>\r\n\t"
+"<Name>Captain Ahab</Name>\r\n"
+"</BankAccount>\r\n";
+
+static const WCHAR szUtf16XML[] = L"<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"no\"?>\r\n";
static const CHAR szUtf16BOM[] = {0xff, 0xfe};
@@ -2150,7 +2143,6 @@ static void test_saxreader(void)
ULONG written;
HANDLE file;
static const CHAR testXmlA[] = "test.xml";
- static const WCHAR testXmlW[] = {'t','e','s','t','.','x','m','l',0};
IXMLDOMDocument *doc;
char seqname[50];
VARIANT_BOOL v;
@@ -2324,7 +2316,7 @@ static void test_saxreader(void)
else
test_seq = content_handler_test1;
set_expected_seq(test_seq);
- hr = ISAXXMLReader_parseURL(reader, testXmlW);
+ hr = ISAXXMLReader_parseURL(reader, L"test.xml");
EXPECT_HR(hr, S_OK);
ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content test 1: from file url", FALSE);
@@ -2335,7 +2327,7 @@ static void test_saxreader(void)
else
test_seq = content_handler_testerror;
set_expected_seq(test_seq);
- hr = ISAXXMLReader_parseURL(reader, testXmlW);
+ hr = ISAXXMLReader_parseURL(reader, L"test.xml");
EXPECT_HR(hr, E_FAIL);
ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content test error", FALSE);
@@ -2345,14 +2337,14 @@ static void test_saxreader(void)
{
test_seq = content_handler_test_callback_rets_alt;
set_expected_seq(test_seq);
- hr = ISAXXMLReader_parseURL(reader, testXmlW);
+ hr = ISAXXMLReader_parseURL(reader, L"test.xml");
EXPECT_HR(hr, S_OK);
}
else
{
test_seq = content_handler_test_callback_rets;
set_expected_seq(test_seq);
- hr = ISAXXMLReader_parseURL(reader, testXmlW);
+ hr = ISAXXMLReader_parseURL(reader, L"test.xml");
EXPECT_HR(hr, S_FALSE);
}
ok_sequence(sequences, CONTENT_HANDLER_INDEX, test_seq, "content callback ret values", FALSE);
@@ -2905,7 +2897,6 @@ static const struct enc_test_entry_t encoding_test_data[] = {
static void test_saxreader_encoding(void)
{
const struct enc_test_entry_t *entry = encoding_test_data;
- static const WCHAR testXmlW[] = {'t','e','s','t','.','x','m','l',0};
static const CHAR testXmlA[] = "test.xml";
while (entry->guid)
@@ -2929,7 +2920,7 @@ static void test_saxreader_encoding(void)
WriteFile(file, UTF8BOMTest, sizeof(UTF8BOMTest)-1, &written, NULL);
CloseHandle(file);
- hr = ISAXXMLReader_parseURL(reader, testXmlW);
+ hr = ISAXXMLReader_parseURL(reader, L"test.xml");
todo_wine_if(entry->todo)
ok(hr == entry->hr, "Expected 0x%08x, got 0x%08x. CLSID %s\n", entry->hr, hr, entry->clsid);
@@ -3098,8 +3089,6 @@ static void test_mxwriter_default_properties(const struct mxwriter_props_t *tabl
static void test_mxwriter_properties(void)
{
- static const WCHAR utf16W[] = {'U','T','F','-','1','6',0};
- static const WCHAR testW[] = {'t','e','s','t',0};
ISAXContentHandler *content;
IMXWriter *writer;
VARIANT_BOOL b;
@@ -3144,7 +3133,7 @@ static void test_mxwriter_properties(void)
str = (void*)0xdeadbeef;
hr = IMXWriter_get_encoding(writer, &str);
EXPECT_HR(hr, S_OK);
- ok(lstrcmpW(str, utf16W) == 0, "expected empty string, got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"UTF-16"), "Unexpected string %s.\n", wine_dbgstr_w(str));
str2 = (void*)0xdeadbeef;
hr = IMXWriter_get_encoding(writer, &str2);
@@ -3155,7 +3144,7 @@ static void test_mxwriter_properties(void)
SysFreeString(str);
/* put empty string */
- str = SysAllocString(emptyW);
+ str = SysAllocString(L"");
hr = IMXWriter_put_encoding(writer, str);
ok(hr == E_INVALIDARG, "got %08x\n", hr);
SysFreeString(str);
@@ -3167,7 +3156,7 @@ static void test_mxwriter_properties(void)
SysFreeString(str);
/* invalid encoding name */
- str = SysAllocString(testW);
+ str = SysAllocString(L"test");
hr = IMXWriter_put_encoding(writer, str);
ok(hr == E_INVALIDARG, "got %08x\n", hr);
SysFreeString(str);
@@ -3346,7 +3335,7 @@ static void test_mxwriter_flush(void)
hr = ISAXContentHandler_startDocument(content);
EXPECT_HR(hr, S_OK);
- hr = ISAXContentHandler_startElement(content, emptyW, 0, emptyW, 0, _bstr_("a"), -1, NULL);
+ hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("a"), -1, NULL);
EXPECT_HR(hr, S_OK);
/* internal buffer is flushed automatically on certain threshold */
@@ -3394,7 +3383,7 @@ static void test_mxwriter_flush(void)
hr = ISAXContentHandler_startDocument(content);
EXPECT_HR(hr, S_OK);
- hr = ISAXContentHandler_startElement(content, emptyW, 0, emptyW, 0, _bstr_("a"), -1, NULL);
+ hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("a"), -1, NULL);
EXPECT_HR(hr, S_OK);
pos.QuadPart = 0;
@@ -3425,7 +3414,7 @@ static void test_mxwriter_flush(void)
hr = ISAXContentHandler_startDocument(content);
EXPECT_HR(hr, S_OK);
- hr = ISAXContentHandler_startElement(content, emptyW, 0, emptyW, 0, _bstr_("a"), -1, NULL);
+ hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("a"), -1, NULL);
EXPECT_HR(hr, S_OK);
memset(buff, 'A', len);
@@ -3971,7 +3960,6 @@ static const struct writer_characters_t writer_characters[] = {
static void test_mxwriter_characters(void)
{
- static const WCHAR chardataW[] = {'T','E','S','T','C','H','A','R','D','A','T','A',' ','.',0};
static const WCHAR embedded_nullbytes[] = {'a',0,'b',0,0,0,'c',0};
const struct writer_characters_t *table = writer_characters;
IVBSAXContentHandler *vb_content;
@@ -4001,14 +3989,14 @@ static void test_mxwriter_characters(void)
hr = ISAXContentHandler_characters(content, NULL, 0);
EXPECT_HR(hr, E_INVALIDARG);
- hr = ISAXContentHandler_characters(content, chardataW, 0);
+ hr = ISAXContentHandler_characters(content, L"TESTCHARDATA .", 0);
EXPECT_HR(hr, S_OK);
str = _bstr_("VbChars");
hr = IVBSAXContentHandler_characters(vb_content, &str);
EXPECT_HR(hr, S_OK);
- hr = ISAXContentHandler_characters(content, chardataW, ARRAY_SIZE(chardataW) - 1);
+ hr = ISAXContentHandler_characters(content, L"TESTCHARDATA .", 14);
EXPECT_HR(hr, S_OK);
V_VT(&dest) = VT_EMPTY;
@@ -4042,7 +4030,7 @@ static void test_mxwriter_characters(void)
hr = ISAXContentHandler_startElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("a"), 1, NULL);
EXPECT_HR(hr, S_OK);
- hr = ISAXContentHandler_characters(content, chardataW, 0);
+ hr = ISAXContentHandler_characters(content, L"TESTCHARDATA .", 0);
EXPECT_HR(hr, S_OK);
hr = ISAXContentHandler_endElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("a"), 1);
@@ -4198,14 +4186,14 @@ static const mxwriter_stream_test mxwriter_stream_tests[] = {
VARIANT_TRUE,"UTF-16",
{
{FALSE,(const BYTE*)szUtf16BOM,sizeof(szUtf16BOM),TRUE},
- {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)},
+ {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)-sizeof(WCHAR)},
{TRUE}
}
},
{
VARIANT_FALSE,"UTF-16",
{
- {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)},
+ {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)-sizeof(WCHAR)},
{TRUE}
}
},
@@ -4235,7 +4223,7 @@ static const mxwriter_stream_test mxwriter_stream_tests[] = {
VARIANT_TRUE,"UTF-16",
{
{FALSE,(const BYTE*)szUtf16BOM,sizeof(szUtf16BOM),TRUE},
- {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)},
+ {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)-sizeof(WCHAR)},
{TRUE}
}
},
@@ -4243,7 +4231,7 @@ static const mxwriter_stream_test mxwriter_stream_tests[] = {
VARIANT_TRUE,"UTF-16",
{
{FALSE,(const BYTE*)szUtf16BOM,sizeof(szUtf16BOM),TRUE,TRUE},
- {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)},
+ {FALSE,(const BYTE*)szUtf16XML,sizeof(szUtf16XML)-sizeof(WCHAR)},
{TRUE}
}
}
@@ -4536,8 +4524,6 @@ static void test_mxwriter_encoding(void)
static void test_obj_dispex(IUnknown *obj)
{
- static const WCHAR testW[] = {'t','e','s','t','p','r','o','p',0};
- static const WCHAR starW[] = {'*',0};
DISPID dispid = DISPID_SAX_XMLREADER_GETFEATURE;
IDispatchEx *dispex;
IUnknown *unk;
@@ -4556,7 +4542,7 @@ static void test_obj_dispex(IUnknown *obj)
EXPECT_HR(hr, S_OK);
ok(ticnt == 1, "ticnt=%u\n", ticnt);
- name = SysAllocString(starW);
+ name = SysAllocString(L"*");
hr = IDispatchEx_DeleteMemberByName(dispex, name, fdexNameCaseSensitive);
EXPECT_HR(hr, E_NOTIMPL);
SysFreeString(name);
@@ -4581,7 +4567,7 @@ static void test_obj_dispex(IUnknown *obj)
EXPECT_HR(hr, E_NOTIMPL);
ok(unk == (IUnknown*)0xdeadbeef, "got %p\n", unk);
- name = SysAllocString(testW);
+ name = SysAllocString(L"testprop");
hr = IDispatchEx_GetDispID(dispex, name, fdexNameEnsure, &did);
ok(hr == DISP_E_UNKNOWNNAME, "got 0x%08x\n", hr);
SysFreeString(name);
@@ -4689,7 +4675,6 @@ static void test_mxwriter_dispex(void)
static void test_mxwriter_comment(void)
{
- static const WCHAR commentW[] = {'c','o','m','m','e','n','t',0};
IVBSAXLexicalHandler *vblexical;
ISAXContentHandler *content;
ISAXLexicalHandler *lexical;
@@ -4722,7 +4707,7 @@ static void test_mxwriter_comment(void)
hr = IVBSAXLexicalHandler_comment(vblexical, NULL);
EXPECT_HR(hr, E_POINTER);
- hr = ISAXLexicalHandler_comment(lexical, commentW, 0);
+ hr = ISAXLexicalHandler_comment(lexical, L"comment", 0);
EXPECT_HR(hr, S_OK);
V_VT(&dest) = VT_EMPTY;
@@ -4732,7 +4717,7 @@ static void test_mxwriter_comment(void)
ok(!lstrcmpW(L"<!---->\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
- hr = ISAXLexicalHandler_comment(lexical, commentW, ARRAY_SIZE(commentW) - 1);
+ hr = ISAXLexicalHandler_comment(lexical, L"comment", 7);
EXPECT_HR(hr, S_OK);
V_VT(&dest) = VT_EMPTY;
@@ -4813,8 +4798,6 @@ static void test_mxwriter_cdata(void)
static void test_mxwriter_pi(void)
{
- static const WCHAR targetW[] = {'t','a','r','g','e','t',0};
- static const WCHAR dataW[] = {'d','a','t','a',0};
ISAXContentHandler *content;
IMXWriter *writer;
VARIANT dest;
@@ -4830,10 +4813,10 @@ static void test_mxwriter_pi(void)
hr = ISAXContentHandler_processingInstruction(content, NULL, 0, NULL, 0);
EXPECT_HR(hr, E_INVALIDARG);
- hr = ISAXContentHandler_processingInstruction(content, targetW, 0, NULL, 0);
+ hr = ISAXContentHandler_processingInstruction(content, L"target", 0, NULL, 0);
EXPECT_HR(hr, S_OK);
- hr = ISAXContentHandler_processingInstruction(content, targetW, 6, NULL, 0);
+ hr = ISAXContentHandler_processingInstruction(content, L"target", 6, NULL, 0);
EXPECT_HR(hr, S_OK);
V_VT(&dest) = VT_EMPTY;
@@ -4843,7 +4826,7 @@ static void test_mxwriter_pi(void)
ok(!lstrcmpW(L"<?\?>\r\n<?target?>\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
- hr = ISAXContentHandler_processingInstruction(content, targetW, 4, dataW, 4);
+ hr = ISAXContentHandler_processingInstruction(content, L"target", 4, L"data", 4);
EXPECT_HR(hr, S_OK);
V_VT(&dest) = VT_EMPTY;
@@ -4857,7 +4840,7 @@ static void test_mxwriter_pi(void)
hr = IMXWriter_put_output(writer, dest);
EXPECT_HR(hr, S_OK);
- hr = ISAXContentHandler_processingInstruction(content, targetW, 6, dataW, 0);
+ hr = ISAXContentHandler_processingInstruction(content, L"target", 6, L"data", 0);
EXPECT_HR(hr, S_OK);
V_VT(&dest) = VT_EMPTY;
@@ -4874,7 +4857,6 @@ static void test_mxwriter_pi(void)
static void test_mxwriter_ignorablespaces(void)
{
- static const WCHAR dataW[] = {'d','a','t','a',0};
ISAXContentHandler *content;
IMXWriter *writer;
VARIANT dest;
@@ -4890,13 +4872,13 @@ static void test_mxwriter_ignorablespaces(void)
hr = ISAXContentHandler_ignorableWhitespace(content, NULL, 0);
EXPECT_HR(hr, E_INVALIDARG);
- hr = ISAXContentHandler_ignorableWhitespace(content, dataW, 0);
+ hr = ISAXContentHandler_ignorableWhitespace(content, L"data", 0);
EXPECT_HR(hr, S_OK);
- hr = ISAXContentHandler_ignorableWhitespace(content, dataW, 4);
+ hr = ISAXContentHandler_ignorableWhitespace(content, L"data", 4);
EXPECT_HR(hr, S_OK);
- hr = ISAXContentHandler_ignorableWhitespace(content, dataW, 1);
+ hr = ISAXContentHandler_ignorableWhitespace(content, L"data", 1);
EXPECT_HR(hr, S_OK);
V_VT(&dest) = VT_EMPTY;
@@ -4912,10 +4894,6 @@ static void test_mxwriter_ignorablespaces(void)
static void test_mxwriter_dtd(void)
{
- static const WCHAR contentW[] = {'c','o','n','t','e','n','t'};
- static const WCHAR nameW[] = {'n','a','m','e'};
- static const WCHAR pubW[] = {'p','u','b'};
- static const WCHAR sysW[] = {'s','y','s'};
IVBSAXLexicalHandler *vblexical;
ISAXContentHandler *content;
ISAXLexicalHandler *lexical;
@@ -4957,16 +4935,16 @@ static void test_mxwriter_dtd(void)
hr = IVBSAXLexicalHandler_startDTD(vblexical, NULL, NULL, NULL);
EXPECT_HR(hr, E_POINTER);
- hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, pubW, ARRAY_SIZE(pubW), NULL, 0);
+ hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, L"pub", 3, NULL, 0);
EXPECT_HR(hr, E_INVALIDARG);
- hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, NULL, 0, sysW, ARRAY_SIZE(sysW));
+ hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, NULL, 0, L"sys", 3);
EXPECT_HR(hr, E_INVALIDARG);
- hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, pubW, ARRAY_SIZE(pubW), sysW, ARRAY_SIZE(sysW));
+ hr = ISAXLexicalHandler_startDTD(lexical, NULL, 0, L"pub", 3, L"sys", 3);
EXPECT_HR(hr, E_INVALIDARG);
- hr = ISAXLexicalHandler_startDTD(lexical, nameW, ARRAY_SIZE(nameW), NULL, 0, NULL, 0);
+ hr = ISAXLexicalHandler_startDTD(lexical, L"name", 4, NULL, 0, NULL, 0);
EXPECT_HR(hr, S_OK);
V_VT(&dest) = VT_EMPTY;
@@ -4977,11 +4955,10 @@ static void test_mxwriter_dtd(void)
VariantClear(&dest);
/* system id is required if public is present */
- hr = ISAXLexicalHandler_startDTD(lexical, nameW, ARRAY_SIZE(nameW), pubW, ARRAY_SIZE(pubW), NULL, 0);
+ hr = ISAXLexicalHandler_startDTD(lexical, L"name", 4, L"pub", 3, NULL, 0);
EXPECT_HR(hr, E_INVALIDARG);
- hr = ISAXLexicalHandler_startDTD(lexical, nameW, ARRAY_SIZE(nameW),
- pubW, ARRAY_SIZE(pubW), sysW, ARRAY_SIZE(sysW));
+ hr = ISAXLexicalHandler_startDTD(lexical, L"name", 4, L"pub", 3, L"sys", 3);
EXPECT_HR(hr, S_OK);
V_VT(&dest) = VT_EMPTY;
@@ -5018,10 +4995,10 @@ static void test_mxwriter_dtd(void)
hr = IVBSAXDeclHandler_elementDecl(vbdecl, NULL, NULL);
EXPECT_HR(hr, E_POINTER);
- hr = ISAXDeclHandler_elementDecl(decl, nameW, ARRAY_SIZE(nameW), NULL, 0);
+ hr = ISAXDeclHandler_elementDecl(decl, L"name", 4, NULL, 0);
EXPECT_HR(hr, E_INVALIDARG);
- hr = ISAXDeclHandler_elementDecl(decl, nameW, ARRAY_SIZE(nameW), contentW, ARRAY_SIZE(contentW));
+ hr = ISAXDeclHandler_elementDecl(decl, L"name", 4, L"content", 7);
EXPECT_HR(hr, S_OK);
V_VT(&dest) = VT_EMPTY;
@@ -5036,7 +5013,7 @@ static void test_mxwriter_dtd(void)
hr = IMXWriter_put_output(writer, dest);
EXPECT_HR(hr, S_OK);
- hr = ISAXDeclHandler_elementDecl(decl, nameW, ARRAY_SIZE(nameW), contentW, 0);
+ hr = ISAXDeclHandler_elementDecl(decl, L"name", 4, L"content", 0);
EXPECT_HR(hr, S_OK);
V_VT(&dest) = VT_EMPTY;
@@ -5609,11 +5586,6 @@ static struct msxmlsupported_data_t saxattr_support_data[] =
static void test_mxattr_localname(void)
{
- static const WCHAR localname1W[] = {'l','o','c','a','l','n','a','m','e','1',0};
- static const WCHAR localnameW[] = {'l','o','c','a','l','n','a','m','e',0};
- static const WCHAR uri1W[] = {'u','r','i','1',0};
- static const WCHAR uriW[] = {'u','r','i',0};
-
const struct msxmlsupported_data_t *table = saxattr_support_data;
while (table->clsid)
@@ -5648,17 +5620,17 @@ static void test_mxattr_localname(void)
EXPECT_HR(hr, S_OK);
index = -1;
- hr = ISAXAttributes_getIndexFromName(saxattr, uriW, lstrlenW(uriW), localnameW, lstrlenW(localnameW), &index);
+ hr = ISAXAttributes_getIndexFromName(saxattr, L"uri", 3, L"localname", 9, &index);
EXPECT_HR(hr, S_OK);
ok(index == 0, "%s: got index %d\n", table->name, index);
index = -1;
- hr = ISAXAttributes_getIndexFromName(saxattr, uri1W, lstrlenW(uri1W), localnameW, lstrlenW(localnameW), &index);
+ hr = ISAXAttributes_getIndexFromName(saxattr, L"uri1", 4, L"localname", 9, &index);
EXPECT_HR(hr, E_INVALIDARG);
ok(index == -1, "%s: got index %d\n", table->name, index);
index = -1;
- hr = ISAXAttributes_getIndexFromName(saxattr, uriW, lstrlenW(uriW), localname1W, lstrlenW(localname1W), &index);
+ hr = ISAXAttributes_getIndexFromName(saxattr, L"uri", 3, L"localname1", 10, &index);
EXPECT_HR(hr, E_INVALIDARG);
ok(index == -1, "%s: got index %d\n", table->name, index);
@@ -5668,7 +5640,7 @@ static void test_mxattr_localname(void)
hr = ISAXAttributes_getIndexFromName(saxattr, NULL, 0, NULL, 0, NULL);
EXPECT_HR(hr, E_POINTER);
- hr = ISAXAttributes_getIndexFromName(saxattr, uriW, lstrlenW(uriW), localname1W, lstrlenW(localname1W), NULL);
+ hr = ISAXAttributes_getIndexFromName(saxattr, L"uri", 3, L"localname1", 10, NULL);
EXPECT_HR(hr, E_POINTER);
}
else
@@ -5676,14 +5648,14 @@ static void test_mxattr_localname(void)
hr = ISAXAttributes_getIndexFromName(saxattr, NULL, 0, NULL, 0, NULL);
EXPECT_HR(hr, E_INVALIDARG);
- hr = ISAXAttributes_getIndexFromName(saxattr, uriW, lstrlenW(uriW), localname1W, lstrlenW(localname1W), NULL);
+ hr = ISAXAttributes_getIndexFromName(saxattr, L"uri", 3, L"localname1", 10, NULL);
EXPECT_HR(hr, E_INVALIDARG);
}
- hr = ISAXAttributes_getIndexFromName(saxattr, uriW, lstrlenW(uriW), NULL, 0, &index);
+ hr = ISAXAttributes_getIndexFromName(saxattr, L"uri", 3, NULL, 0, &index);
EXPECT_HR(hr, E_INVALIDARG);
- hr = ISAXAttributes_getIndexFromName(saxattr, NULL, 0, localname1W, lstrlenW(localname1W), &index);
+ hr = ISAXAttributes_getIndexFromName(saxattr, NULL, 0, L"localname1", 10, &index);
EXPECT_HR(hr, E_INVALIDARG);
table++;
@@ -5713,25 +5685,25 @@ static void test_mxwriter_indent(void)
hr = ISAXContentHandler_startDocument(content);
ok(hr == S_OK, "got %08x\n", hr);
- hr = ISAXContentHandler_startElement(content, emptyW, 0, emptyW, 0, _bstr_("a"), -1, NULL);
+ hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("a"), -1, NULL);
ok(hr == S_OK, "got %08x\n", hr);
hr = ISAXContentHandler_characters(content, _bstr_(""), 0);
ok(hr == S_OK, "got %08x\n", hr);
- hr = ISAXContentHandler_startElement(content, emptyW, 0, emptyW, 0, _bstr_("b"), -1, NULL);
+ hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("b"), -1, NULL);
ok(hr == S_OK, "got %08x\n", hr);
- hr = ISAXContentHandler_startElement(content, emptyW, 0, emptyW, 0, _bstr_("c"), -1, NULL);
+ hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("c"), -1, NULL);
ok(hr == S_OK, "got %08x\n", hr);
- hr = ISAXContentHandler_endElement(content, emptyW, 0, emptyW, 0, _bstr_("c"), -1);
+ hr = ISAXContentHandler_endElement(content, L"", 0, L"", 0, _bstr_("c"), -1);
ok(hr == S_OK, "got %08x\n", hr);
- hr = ISAXContentHandler_endElement(content, emptyW, 0, emptyW, 0, _bstr_("b"), -1);
+ hr = ISAXContentHandler_endElement(content, L"", 0, L"", 0, _bstr_("b"), -1);
ok(hr == S_OK, "got %08x\n", hr);
- hr = ISAXContentHandler_endElement(content, emptyW, 0, emptyW, 0, _bstr_("a"), -1);
+ hr = ISAXContentHandler_endElement(content, L"", 0, L"", 0, _bstr_("a"), -1);
ok(hr == S_OK, "got %08x\n", hr);
hr = ISAXContentHandler_endDocument(content);
diff --git a/dlls/msxml3/tests/schema.c b/dlls/msxml3/tests/schema.c
index 4637d62f8b2..d1622ffc7da 100644
--- a/dlls/msxml3/tests/schema.c
+++ b/dlls/msxml3/tests/schema.c
@@ -37,14 +37,6 @@
#define EXPECT_HR(hr,hr_exp) \
ok(hr == hr_exp, "got 0x%08x, expected 0x%08x\n", hr, hr_exp)
-static const WCHAR xdr_schema_uri[] = {'x','-','s','c','h','e','m','a',':','t','e','s','t','.','x','m','l',0};
-
-static const WCHAR xdr_schema_xml[] = {
- '<','S','c','h','e','m','a',' ','x','m','l','n','s','=','\"','u','r','n',':','s','c','h','e','m','a','s','-','m','i','c','r','o','s','o','f','t','-','c','o','m',':','x','m','l','-','d','a','t','a','\"','\n',
- 'x','m','l','n','s',':','d','t','=','\"','u','r','n',':','s','c','h','e','m','a','s','-','m','i','c','r','o','s','o','f','t','-','c','o','m',':','d','a','t','a','t','y','p','e','s','\"','>','\n',
- '<','/','S','c','h','e','m','a','>','\n',0
-};
-
static const CHAR xdr_schema1_uri[] = "x-schema:test1.xdr";
static const CHAR xdr_schema1_xml[] =
"<?xml version='1.0'?>"
@@ -498,7 +490,8 @@ static void* _create_object(const GUID *clsid, const char *name, const IID *iid,
static void test_schema_refs(void)
{
- static const WCHAR emptyW[] = {0};
+ static const WCHAR xdr_schema_xml[] =
+ L"<Schema xmlns=\"urn:schemas-microsoft-com:xml-data\"\nxmlns:dt=\"urn:schemas-microsoft-com:datatypes\">\n</Schema>\n";
IXMLDOMDocument2 *doc;
IXMLDOMNode *node;
IXMLDOMSchemaCollection *cache;
@@ -546,7 +539,7 @@ static void test_schema_refs(void)
IXMLDOMNode_Release(node);
node = NULL;
- str = SysAllocString(emptyW);
+ str = SysAllocString(L"");
ole_check(IXMLDOMSchemaCollection_get(cache, str, &node));
ok(node != NULL, "%p\n", node);
IXMLDOMNode_Release(node);
@@ -576,7 +569,7 @@ static void test_schema_refs(void)
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(len == 0, "got %d\n", len);
- str = SysAllocString(xdr_schema_uri);
+ str = SysAllocString(L"x-schema:test.xml");
ole_check(IXMLDOMSchemaCollection_add(cache, str, _variantdoc_(doc)));
/* IXMLDOMSchemaCollection_add doesn't add a ref on doc */
@@ -1430,8 +1423,6 @@ static void test_validate_on_load(void)
static void test_obj_dispex(IUnknown *obj)
{
- static const WCHAR testW[] = {'t','e','s','t','p','r','o','p',0};
- static const WCHAR starW[] = {'*',0};
DISPID dispid = DISPID_SAX_XMLREADER_GETFEATURE;
IDispatchEx *dispex;
IUnknown *unk;
@@ -1449,7 +1440,7 @@ static void test_obj_dispex(IUnknown *obj)
EXPECT_HR(hr, S_OK);
ok(ticnt == 1, "ticnt=%u\n", ticnt);
- name = SysAllocString(starW);
+ name = SysAllocString(L"*");
hr = IDispatchEx_DeleteMemberByName(dispex, name, fdexNameCaseSensitive);
EXPECT_HR(hr, E_NOTIMPL);
SysFreeString(name);
@@ -1474,7 +1465,7 @@ static void test_obj_dispex(IUnknown *obj)
EXPECT_HR(hr, E_NOTIMPL);
ok(unk == (IUnknown*)0xdeadbeef, "got %p\n", unk);
- name = SysAllocString(testW);
+ name = SysAllocString(L"testprop");
hr = IDispatchEx_GetDispID(dispex, name, fdexNameEnsure, &dispid);
ok(hr == DISP_E_UNKNOWNNAME, "got 0x%08x\n", hr);
SysFreeString(name);
diff --git a/dlls/msxml3/tests/xmldoc.c b/dlls/msxml3/tests/xmldoc.c
index 8854e0e2fa8..7ad6e3177f7 100644
--- a/dlls/msxml3/tests/xmldoc.c
+++ b/dlls/msxml3/tests/xmldoc.c
@@ -95,14 +95,6 @@ static void test_xmldoc(void)
HRESULT hr;
BSTR name;
- static const WCHAR szBankAccount[] = {'B','A','N','K','A','C','C','O','U','N','T',0};
- static const WCHAR szNumber[] = {'N','U','M','B','E','R',0};
- static const WCHAR szNumVal[] = {'1','2','3','4',0};
- static const WCHAR szName[] = {'N','A','M','E',0};
- static const WCHAR szNameVal[] = {'C','a','p','t','a','i','n',' ','A','h','a','b',0};
- static const WCHAR szVersion[] = {'1','.','0',0};
- static const WCHAR rootW[] = {'r','o','o','t',0};
-
hr = CoCreateInstance(&CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER,
&IID_IXMLDocument, (void**)&doc);
EXPECT_HR(hr, S_OK);
@@ -117,7 +109,7 @@ static void test_xmldoc(void)
name = NULL;
hr = ITypeInfo_GetDocumentation(ti, DISPID_XMLDOCUMENT_ROOT, &name, NULL, NULL, NULL);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(name, rootW), "got name %s\n", wine_dbgstr_w(name));
+ ok(!lstrcmpW(name, L"root"), "got name %s\n", wine_dbgstr_w(name));
SysFreeString(name);
ITypeInfo_Release(ti);
@@ -152,7 +144,7 @@ static void test_xmldoc(void)
name = NULL;
hr = IXMLDocument_get_version(doc, &name);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(name, szVersion), "Expected 1.0, got %s\n", wine_dbgstr_w(name));
+ ok(!lstrcmpW(name, L"1.0"), "Expected 1.0, got %s\n", wine_dbgstr_w(name));
SysFreeString(name);
/* doctype */
@@ -161,7 +153,7 @@ static void test_xmldoc(void)
hr = IXMLDocument_get_doctype(doc, &name);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(name, szBankAccount), "Expected BANKACCOUNT, got %s\n", wine_dbgstr_w(name));
+ ok(!lstrcmpW(name, L"BANKACCOUNT"), "Expected BANKACCOUNT, got %s\n", wine_dbgstr_w(name));
SysFreeString(name);
hr = IXMLDocument_get_root(doc, &element);
@@ -181,7 +173,7 @@ static void test_xmldoc(void)
hr = IXMLElement_get_tagName(element, &name);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(name, szBankAccount), "Expected BANKACCOUNT\n");
+ ok(!lstrcmpW(name, L"BANKACCOUNT"), "Expected BANKACCOUNT\n");
SysFreeString(name);
hr = IXMLElement_get_children(element, &collection);
@@ -206,7 +198,7 @@ static void test_xmldoc(void)
hr = IXMLElement_get_tagName(child, &name);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(name, szNumber), "Expected NUMBER\n");
+ ok(!lstrcmpW(name, L"NUMBER"), "Expected NUMBER\n");
SysFreeString(name);
hr = IXMLElement_get_children(child, &inner);
@@ -227,7 +219,7 @@ static void test_xmldoc(void)
hr = IXMLElement_get_text(value, &name);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(name, szNumVal), "Expected '1234'\n");
+ ok(!lstrcmpW(name, L"1234"), "Expected '1234'\n");
SysFreeString(name);
IXMLElementCollection_Release(inner);
@@ -253,7 +245,7 @@ static void test_xmldoc(void)
hr = IXMLElement_get_tagName(child, &name);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(name, szName), "Expected NAME\n");
+ ok(!lstrcmpW(name, L"NAME"), "Expected NAME\n");
SysFreeString(name);
hr = IXMLElement_get_children(child, &inner);
@@ -275,7 +267,7 @@ static void test_xmldoc(void)
hr = IXMLElement_get_text(value, &name);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(name, szNameVal), "Expected 'Captain Ahab'\n");
+ ok(!lstrcmpW(name, L"Captain Ahab"), "Expected 'Captain Ahab'\n");
SysFreeString(name);
IXMLElementCollection_Release(inner);
@@ -398,7 +390,6 @@ static void test_persiststreaminit(void)
CHAR path[MAX_PATH];
CLSID id;
BSTR str;
- static const WCHAR testW[] = {'t','e','s','t',0};
hr = CoCreateInstance(&CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER,
&IID_IXMLDocument, (LPVOID*)&doc);
@@ -456,7 +447,7 @@ static void test_persiststreaminit(void)
todo_wine ok(stat.cbSize.QuadPart > 0, "Expected >0\n");
IStream_Release(stream);
- str = SysAllocString(testW);
+ str = SysAllocString(L"test");
hr = IXMLDocument_get_root(doc, &element);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
hr = IXMLElement_put_text(element, str);
@@ -658,16 +649,13 @@ static void test_xmlelem_collection(void)
ULONG num_vars;
VARIANT var[3], dummy, vIndex, vName;
BSTR url, str;
- static const CHAR szBankXML[] = "bank.xml";
- static const WCHAR szNumber[] = {'N','U','M','B','E','R',0};
- static const WCHAR szName[] = {'N','A','M','E',0};
hr = CoCreateInstance(&CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER,
&IID_IXMLDocument, (LPVOID*)&doc);
ok(hr == S_OK, "Expected S_OK, got 0x%08x\n", hr);
- create_xml_file(szBankXML);
- GetFullPathNameA(szBankXML, MAX_PATH, pathA, NULL);
+ create_xml_file("bank.xml");
+ GetFullPathNameA("bank.xml", MAX_PATH, pathA, NULL);
MultiByteToWideChar(CP_ACP, 0, pathA, -1, path, MAX_PATH);
url = SysAllocString(path);
@@ -755,7 +743,7 @@ static void test_xmlelem_collection(void)
hr = IXMLElement_get_tagName(child, &str);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(str, szNumber), "Expected NUMBER\n");
+ ok(!lstrcmpW(str, L"NUMBER"), "Expected NUMBER\n");
SysFreeString(str);
IXMLElement_Release(child);
@@ -822,7 +810,7 @@ static void test_xmlelem_collection(void)
hr = IXMLElement_get_tagName(child, &str);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(str, szName), "Expected NAME\n");
+ ok(!lstrcmpW(str, L"NAME"), "Expected NAME\n");
SysFreeString(str);
IXMLElement_Release(child);
@@ -841,7 +829,7 @@ static void test_xmlelem_collection(void)
hr = IXMLElement_get_tagName(child, &str);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(str, szNumber), "Expected NUMBER\n");
+ ok(!lstrcmpW(str, L"NUMBER"), "Expected NUMBER\n");
SysFreeString(str);
IXMLElement_Release(child);
@@ -860,7 +848,7 @@ static void test_xmlelem_collection(void)
hr = IXMLElement_get_tagName(child, &str);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(str, szName), "Expected NAME\n");
+ ok(!lstrcmpW(str, L"NAME"), "Expected NAME\n");
SysFreeString(str);
IXMLElement_Release(child);
@@ -897,13 +885,6 @@ static void test_xmlelem(void)
IDispatch *disp;
ITypeInfo *ti;
- static const WCHAR propName[] = {'p','r','o','p',0};
- static const WCHAR propVal[] = {'v','a','l',0};
- static const WCHAR nextVal[] = {'n','e','x','t',0};
- static const WCHAR noexist[] = {'n','o','e','x','i','s','t',0};
- static const WCHAR crazyCase1[] = {'C','R','a','z','Y','c','A','S','E',0};
- static const WCHAR crazyCase2[] = {'C','R','A','Z','Y','C','A','S','E',0};
-
hr = CoCreateInstance(&CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER,
&IID_IXMLDocument, (LPVOID*)&doc);
EXPECT_HR(hr, S_OK);
@@ -941,7 +922,7 @@ static void test_xmlelem(void)
ok(hr == 1, "Expected 1, got %08x\n", hr);
ok(parent == NULL, "Expected NULL parent\n");
- str = SysAllocString(noexist);
+ str = SysAllocString(L"noexist");
hr = IXMLElement_getAttribute(element, str, &vValue);
ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr);
ok(V_VT(&vValue) == VT_EMPTY, "Expected VT_EMPTY, got %d\n", V_VT(&vValue));
@@ -949,8 +930,8 @@ static void test_xmlelem(void)
VariantClear(&vValue);
SysFreeString(str);
- str = SysAllocString(crazyCase1);
- val = SysAllocString(propVal);
+ str = SysAllocString(L"CRazYcASE");
+ val = SysAllocString(L"val");
V_VT(&vValue) = VT_BSTR;
V_BSTR(&vValue) = val;
hr = IXMLElement_setAttribute(element, str, vValue);
@@ -958,16 +939,16 @@ static void test_xmlelem(void)
SysFreeString(str);
SysFreeString(val);
- str = SysAllocString(crazyCase2);
+ str = SysAllocString(L"CRAZYCASE");
hr = IXMLElement_getAttribute(element, str, &vValue);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
ok(V_VT(&vValue) == VT_BSTR, "Expected VT_BSTR, got %d\n", V_VT(&vValue));
- ok(!lstrcmpW(V_BSTR(&vValue), propVal), "Expected 'val'\n");
+ ok(!lstrcmpW(V_BSTR(&vValue), L"val"), "Expected 'val'\n");
VariantClear(&vValue);
SysFreeString(str);
- str = SysAllocString(propName);
- val = SysAllocString(propVal);
+ str = SysAllocString(L"prop");
+ val = SysAllocString(L"val");
V_VT(&vValue) = VT_BSTR;
V_BSTR(&vValue) = val;
hr = IXMLElement_setAttribute(element, str, vValue);
@@ -977,7 +958,7 @@ static void test_xmlelem(void)
hr = IXMLElement_getAttribute(element, str, &vValue);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
ok(V_VT(&vValue) == VT_BSTR, "Expected VT_BSTR, got %d\n", V_VT(&vValue));
- ok(!lstrcmpW(V_BSTR(&vValue), propVal), "Expected 'val'\n");
+ ok(!lstrcmpW(V_BSTR(&vValue), L"val"), "Expected 'val'\n");
VariantClear(&vValue);
hr = IXMLElement_removeAttribute(element, str);
@@ -1009,7 +990,7 @@ static void test_xmlelem(void)
SysFreeString(str);
/* put_text with an ELEMENT */
- str = SysAllocString(propVal);
+ str = SysAllocString(L"val");
hr = IXMLElement_put_text(element, str);
ok(hr == E_NOTIMPL, "Expected E_NOTIMPL, got %08x\n", hr);
SysFreeString(str);
@@ -1024,7 +1005,7 @@ static void test_xmlelem(void)
hr = IXMLElement_addChild(element, child, 0, -1);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- str = SysAllocString(propVal);
+ str = SysAllocString(L"val");
hr = IXMLElement_put_text(child, str);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
SysFreeString(str);
@@ -1061,28 +1042,28 @@ static void test_xmlelem(void)
hr = IXMLElement_get_text(element, &str);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(str, propVal), "Expected 'val'\n");
+ ok(!lstrcmpW(str, L"val"), "Expected 'val'\n");
SysFreeString(str);
hr = IXMLElement_get_text(child2, &str);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(str, propVal), "Expected 'val'\n");
+ ok(!lstrcmpW(str, L"val"), "Expected 'val'\n");
SysFreeString(str);
/* try put_text on ELEMENT again, now that it has a text child */
- str = SysAllocString(nextVal);
+ str = SysAllocString(L"next");
hr = IXMLElement_put_text(element, str);
ok(hr == E_NOTIMPL, "Expected E_NOTIMPL, got %08x\n", hr);
SysFreeString(str);
- str = SysAllocString(nextVal);
+ str = SysAllocString(L"next");
hr = IXMLElement_put_text(child2, str);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
SysFreeString(str);
hr = IXMLElement_get_text(element, &str);
ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
- ok(!lstrcmpW(str, nextVal), "Expected 'val'\n");
+ ok(!lstrcmpW(str, L"next"), "Expected 'val'\n");
SysFreeString(str);
IXMLElement_Release(child2);
diff --git a/dlls/msxml3/tests/xmlview.c b/dlls/msxml3/tests/xmlview.c
index 53eefcb7e00..01e6dedab3f 100644
--- a/dlls/msxml3/tests/xmlview.c
+++ b/dlls/msxml3/tests/xmlview.c
@@ -121,14 +121,15 @@ static HRESULT WINAPI HTMLEvents_Invoke(IDispatch *iface, DISPID dispIdMember, R
LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
- if(dispIdMember == DISPID_HTMLDOCUMENTEVENTS2_ONREADYSTATECHANGE) {
- static const WCHAR completeW[] = {'c','o','m','p','l','e','t','e',0};
+ if (dispIdMember == DISPID_HTMLDOCUMENTEVENTS2_ONREADYSTATECHANGE)
+ {
+ static const WCHAR completeW[] = L"complete";
HRESULT hr;
BSTR state;
hr = IHTMLDocument2_get_readyState(html_doc, &state);
ok(hr == S_OK, "got 0x%08x\n", hr);
- if(!memcmp(state, completeW, sizeof(completeW)))
+ if (!memcmp(state, completeW, sizeof(completeW)))
loaded = TRUE;
SysFreeString(state);
}
@@ -191,9 +192,6 @@ static void test_QueryInterface(void)
static void test_Load(void)
{
- static const WCHAR xmlview_xmlW[] = {'/','x','m','l','/','x','m','l','v','i','e','w','.','x','m','l',0};
- static const WCHAR res[] = {'r','e','s',':','/','/',0};
-
WCHAR buf[1024];
IPersistMoniker *pers_mon;
IConnectionPointContainer *cpc;
@@ -205,9 +203,9 @@ static void test_Load(void)
MSG msg;
BSTR source;
- lstrcpyW(buf, res);
- GetModuleFileNameW(NULL, buf+lstrlenW(buf), ARRAY_SIZE(buf)-ARRAY_SIZE(res));
- lstrcatW(buf, xmlview_xmlW);
+ lstrcpyW(buf, L"res://");
+ GetModuleFileNameW(NULL, buf+lstrlenW(buf), ARRAY_SIZE(buf)-ARRAY_SIZE(L"res://"));
+ lstrcatW(buf, L"/xml/xmlview.xml");
if(!pCreateURLMoniker) {
win_skip("CreateURLMoniker not available\n");
--
2.28.0
2
2
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/evr/presenter.c | 55 ++++++++++++++++++++++++++++++++++----------
1 file changed, 43 insertions(+), 12 deletions(-)
diff --git a/dlls/evr/presenter.c b/dlls/evr/presenter.c
index 04e9a556840..4a7a4021c28 100644
--- a/dlls/evr/presenter.c
+++ b/dlls/evr/presenter.c
@@ -357,6 +357,41 @@ static ULONG WINAPI video_presenter_service_client_Release(IMFTopologyServiceLoo
return IMFVideoPresenter_Release(&presenter->IMFVideoPresenter_iface);
}
+static HRESULT video_presenter_attach_mixer(struct video_presenter *presenter, IMFTopologyServiceLookup *service_lookup)
+{
+ IMFVideoDeviceID *device_id;
+ unsigned int count;
+ GUID id = { 0 };
+ HRESULT hr;
+
+ count = 1;
+ if (FAILED(hr = IMFTopologyServiceLookup_LookupService(service_lookup, MF_SERVICE_LOOKUP_GLOBAL, 0,
+ &MR_VIDEO_MIXER_SERVICE, &IID_IMFTransform, (void **)&presenter->mixer, &count)))
+ {
+ WARN("Failed to get mixer interface, hr %#x.\n", hr);
+ return hr;
+ }
+
+ if (SUCCEEDED(hr = IMFTransform_QueryInterface(presenter->mixer, &IID_IMFVideoDeviceID, (void **)&device_id)))
+ {
+ if (SUCCEEDED(hr = IMFVideoDeviceID_GetDeviceID(device_id, &id)))
+ {
+ if (!IsEqualGUID(&id, &IID_IDirect3DDevice9))
+ hr = MF_E_INVALIDREQUEST;
+ }
+
+ IMFVideoDeviceID_Release(device_id);
+ }
+
+ if (FAILED(hr))
+ {
+ IMFTransform_Release(presenter->mixer);
+ presenter->mixer = NULL;
+ }
+
+ return hr;
+}
+
static HRESULT WINAPI video_presenter_service_client_InitServicePointers(IMFTopologyServiceLookupClient *iface,
IMFTopologyServiceLookup *service_lookup)
{
@@ -384,20 +419,16 @@ static HRESULT WINAPI video_presenter_service_client_InitServicePointers(IMFTopo
IMFTopologyServiceLookup_LookupService(service_lookup, MF_SERVICE_LOOKUP_GLOBAL, 0,
&MR_VIDEO_RENDER_SERVICE, &IID_IMFClock, (void **)&presenter->clock, &count);
- count = 1;
- if (SUCCEEDED(hr = IMFTopologyServiceLookup_LookupService(service_lookup, MF_SERVICE_LOOKUP_GLOBAL, 0,
- &MR_VIDEO_MIXER_SERVICE, &IID_IMFTransform, (void **)&presenter->mixer, &count)))
- {
- /* FIXME: presumably should validate mixer's device id. */
- }
- else
- WARN("Failed to get mixer interface, hr %#x.\n", hr);
+ hr = video_presenter_attach_mixer(presenter, service_lookup);
- count = 1;
- if (FAILED(hr = IMFTopologyServiceLookup_LookupService(service_lookup, MF_SERVICE_LOOKUP_GLOBAL, 0,
- &MR_VIDEO_RENDER_SERVICE, &IID_IMediaEventSink, (void **)&presenter->event_sink, &count)))
+ if (SUCCEEDED(hr))
{
- WARN("Failed to get renderer event sink, hr %#x.\n", hr);
+ count = 1;
+ if (FAILED(hr = IMFTopologyServiceLookup_LookupService(service_lookup, MF_SERVICE_LOOKUP_GLOBAL, 0,
+ &MR_VIDEO_RENDER_SERVICE, &IID_IMediaEventSink, (void **)&presenter->event_sink, &count)))
+ {
+ WARN("Failed to get renderer event sink, hr %#x.\n", hr);
+ }
}
if (SUCCEEDED(hr))
--
2.28.0
1
4
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/mfplat/mfplat.spec | 6 +++---
dlls/rtworkq/queue.c | 21 +++++++++++++++++++++
dlls/rtworkq/rtworkq.spec | 6 +++---
include/mfapi.h | 3 +++
include/rtworkq.idl | 2 ++
5 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/dlls/mfplat/mfplat.spec b/dlls/mfplat/mfplat.spec
index f55a8237d35..8f5e7db6aee 100644
--- a/dlls/mfplat/mfplat.spec
+++ b/dlls/mfplat/mfplat.spec
@@ -25,7 +25,7 @@
@ stub MFBeginGetHostByName
@ stub MFBeginRegisterWorkQueueWithMMCSS
@ stdcall MFBeginRegisterWorkQueueWithMMCSSEx(long wstr long long ptr ptr) rtworkq.RtwqBeginRegisterWorkQueueWithMMCSS
-@ stub MFBeginUnregisterWorkQueueWithMMCSS
+@ stdcall MFBeginUnregisterWorkQueueWithMMCSS(long ptr ptr) rtworkq.RtwqBeginUnregisterWorkQueueWithMMCSS
@ stub MFBlockThread
@ stub MFCalculateBitmapImageSize
@ stdcall MFCalculateImageSize(ptr long long ptr)
@@ -87,8 +87,8 @@
@ stub MFDeserializePresentationDescriptor
@ stdcall MFEndCreateFile(ptr ptr)
@ stub MFEndGetHostByName
-@ stub MFEndRegisterWorkQueueWithMMCSS
-@ stub MFEndUnregisterWorkQueueWithMMCSS
+@ stdcall MFEndRegisterWorkQueueWithMMCSS(ptr ptr) rtworkq.RtwqEndRegisterWorkQueueWithMMCSS
+@ stdcall MFEndUnregisterWorkQueueWithMMCSS(ptr) rtworkq.RtwqEndUnregisterWorkQueueWithMMCSS
@ stub MFFrameRateToAverageTimePerFrame
@ stub MFFreeAdaptersAddresses
@ stub MFGetAdaptersAddresses
diff --git a/dlls/rtworkq/queue.c b/dlls/rtworkq/queue.c
index 07d124cfb73..f4e9f10d3f0 100644
--- a/dlls/rtworkq/queue.c
+++ b/dlls/rtworkq/queue.c
@@ -1533,6 +1533,27 @@ HRESULT WINAPI RtwqBeginRegisterWorkQueueWithMMCSS(DWORD queue, const WCHAR *cla
return E_NOTIMPL;
}
+HRESULT WINAPI RtwqEndRegisterWorkQueueWithMMCSS(IRtwqAsyncResult *result, DWORD *taskid)
+{
+ FIXME("%p, %p.\n", result, taskid);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqBeginUnregisterWorkQueueWithMMCSS(DWORD queue, IRtwqAsyncCallback *callback, IUnknown *state)
+{
+ FIXME("%#x, %p, %p.\n", queue, callback, state);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqEndUnregisterWorkQueueWithMMCSS(IRtwqAsyncResult *result)
+{
+ FIXME("%p.\n", result);
+
+ return E_NOTIMPL;
+}
+
HRESULT WINAPI RtwqRegisterPlatformEvents(IRtwqPlatformEvents *events)
{
FIXME("%p.\n", events);
diff --git a/dlls/rtworkq/rtworkq.spec b/dlls/rtworkq/rtworkq.spec
index 09d877790d5..2200b0863bd 100644
--- a/dlls/rtworkq/rtworkq.spec
+++ b/dlls/rtworkq/rtworkq.spec
@@ -2,13 +2,13 @@
@ stdcall RtwqAllocateSerialWorkQueue(long ptr)
@ stdcall RtwqAllocateWorkQueue(long ptr)
@ stdcall RtwqBeginRegisterWorkQueueWithMMCSS(long wstr long long ptr ptr)
-@ stub RtwqBeginUnregisterWorkQueueWithMMCSS
+@ stdcall RtwqBeginUnregisterWorkQueueWithMMCSS(long ptr ptr)
@ stdcall RtwqCancelDeadline(long)
@ stub RtwqCancelMultipleWaitingWorkItem
@ stdcall RtwqCancelWorkItem(int64)
@ stdcall RtwqCreateAsyncResult(ptr ptr ptr ptr)
-@ stub RtwqEndRegisterWorkQueueWithMMCSS
-@ stub RtwqEndUnregisterWorkQueueWithMMCSS
+@ stdcall RtwqEndRegisterWorkQueueWithMMCSS(ptr ptr)
+@ stdcall RtwqEndUnregisterWorkQueueWithMMCSS(ptr)
@ stub RtwqGetPlatform
@ stdcall RtwqGetWorkQueueMMCSSClass(long ptr ptr)
@ stdcall RtwqGetWorkQueueMMCSSPriority(long ptr)
diff --git a/include/mfapi.h b/include/mfapi.h
index b1edeac02f6..e9b26f322c3 100644
--- a/include/mfapi.h
+++ b/include/mfapi.h
@@ -490,6 +490,7 @@ HRESULT WINAPI MFBeginCreateFile(MF_FILE_ACCESSMODE access_mode, MF_FILE_OPENMOD
const WCHAR *path, IMFAsyncCallback *callback, IUnknown *state, IUnknown **cancel_cookie);
HRESULT WINAPI MFBeginRegisterWorkQueueWithMMCSSEx(DWORD queue, const WCHAR *usage_class, DWORD taskid, LONG priority,
IMFAsyncCallback *callback, IUnknown *state);
+HRESULT WINAPI MFBeginUnregisterWorkQueueWithMMCSS(DWORD queue, IMFAsyncCallback *callback, IUnknown *state);
HRESULT WINAPI MFCalculateImageSize(REFGUID subtype, UINT32 width, UINT32 height, UINT32 *size);
HRESULT WINAPI MFCancelCreateFile(IUnknown *cancel_cookie);
HRESULT WINAPI MFCancelWorkItem(MFWORKITEM_KEY key);
@@ -517,6 +518,8 @@ HRESULT WINAPI MFCreateVideoMediaTypeFromSubtype(const GUID *subtype, IMFVideoMe
HRESULT WINAPI MFCreateMemoryBuffer(DWORD max_length, IMFMediaBuffer **buffer);
HRESULT WINAPI MFCreateWaveFormatExFromMFMediaType(IMFMediaType *type, WAVEFORMATEX **format, UINT32 *size, UINT32 flags);
HRESULT WINAPI MFEndCreateFile(IMFAsyncResult *result, IMFByteStream **stream);
+HRESULT WINAPI MFEndRegisterWorkQueueWithMMCSS(IMFAsyncResult *result, DWORD *taskid);
+HRESULT WINAPI MFEndUnregisterWorkQueueWithMMCSS(IMFAsyncResult *result);
void * WINAPI MFHeapAlloc(SIZE_T size, ULONG flags, char *file, int line, EAllocationType type);
void WINAPI MFHeapFree(void *ptr);
HRESULT WINAPI MFGetAttributesAsBlob(IMFAttributes *attributes, UINT8 *buffer, UINT size);
diff --git a/include/rtworkq.idl b/include/rtworkq.idl
index ed32df1c3bf..e7ff768074c 100644
--- a/include/rtworkq.idl
+++ b/include/rtworkq.idl
@@ -93,9 +93,11 @@ cpp_quote("HRESULT WINAPI RtwqAddPeriodicCallback(RTWQPERIODICCALLBACK callback,
cpp_quote("HRESULT WINAPI RtwqAllocateSerialWorkQueue(DWORD target_queue, DWORD *queue);")
cpp_quote("HRESULT WINAPI RtwqAllocateWorkQueue(RTWQ_WORKQUEUE_TYPE queue_type, DWORD *queue);")
cpp_quote("HRESULT WINAPI RtwqBeginRegisterWorkQueueWithMMCSS(DWORD queue, const WCHAR *class, DWORD taskid, LONG priority, IRtwqAsyncCallback *callback, IUnknown *state);")
+cpp_quote("HRESULT WINAPI RtwqBeginUnregisterWorkQueueWithMMCSS(DWORD queue, IRtwqAsyncCallback *callback, IUnknown *state);")
cpp_quote("HRESULT WINAPI RtwqCancelDeadline(HANDLE request);")
cpp_quote("HRESULT WINAPI RtwqCancelWorkItem(RTWQWORKITEM_KEY key);")
cpp_quote("HRESULT WINAPI RtwqCreateAsyncResult(IUnknown *object, IRtwqAsyncCallback *callback, IUnknown *state, IRtwqAsyncResult **result);")
+cpp_quote("HRESULT WINAPI RtwqEndRegisterWorkQueueWithMMCSS(IRtwqAsyncResult *result, DWORD *taskid);")
cpp_quote("HRESULT WINAPI RtwqGetWorkQueueMMCSSClass(DWORD queue, WCHAR *class, DWORD *length);")
cpp_quote("HRESULT WINAPI RtwqGetWorkQueueMMCSSPriority(DWORD queue, LONG *priority);")
cpp_quote("HRESULT WINAPI RtwqGetWorkQueueMMCSSTaskId(DWORD queue, DWORD *taskid);")
--
2.28.0
1
0
Oct. 5, 2020
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/comctl32/tests/listview.c | 116 +++++++--------------------------
1 file changed, 25 insertions(+), 91 deletions(-)
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
index 9db3dc6ec44..e95b81f5bb1 100644
--- a/dlls/comctl32/tests/listview.c
+++ b/dlls/comctl32/tests/listview.c
@@ -62,8 +62,6 @@ static NMLISTVIEW g_nmlistview_changing;
/* format reported to control:
-1 falls to defproc, anything else returned */
static INT notifyFormat;
-/* indicates we're running < 5.80 version */
-static BOOL g_is_below_5;
/* item data passed to LVN_GETDISPINFOA */
static LVITEMA g_itema;
/* alter notification code A->W */
@@ -727,20 +725,6 @@ static HWND create_listview_controlW(DWORD style, HWND parent)
return hwnd;
}
-static BOOL is_win_xp(void)
-{
- HWND hwnd, header;
- BOOL ret;
-
- hwnd = create_listview_control(LVS_ICON);
- SendMessageA(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_HEADERINALLVIEWS, LVS_EX_HEADERINALLVIEWS);
- header = (HWND)SendMessageA(hwnd, LVM_GETHEADER, 0, 0);
- ret = !IsWindow(header);
-
- DestroyWindow(hwnd);
-
- return ret;
-}
static LRESULT WINAPI header_subclass_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
@@ -1039,12 +1023,6 @@ static void test_checkboxes(void)
item.stateMask = 0xffff;
r = SendMessageA(hwnd, LVM_GETITEMA, 0, (LPARAM) &item);
expect(1, r);
- if (item.state != 0x1ccc)
- {
- win_skip("LVS_EX_CHECKBOXES style is unavailable. Skipping.\n");
- DestroyWindow(hwnd);
- return;
- }
/* Now add an item without specifying a state and check that its state goes to 0x1000 */
item.iItem = 2;
@@ -1638,12 +1616,6 @@ static void test_create(BOOL is_version_6)
DWORD style;
ATOM class;
- if (is_win_xp() && is_version_6)
- {
- win_skip("Skipping some tests on XP.\n");
- return;
- }
-
cls.cbSize = sizeof(WNDCLASSEXA);
r = GetClassInfoExA(GetModuleHandleA(NULL), WC_LISTVIEWA, &cls);
ok(r, "Failed to get class info.\n");
@@ -3136,29 +3108,22 @@ static void test_ownerdata(void)
DWORD res;
LVITEMA item;
- /* it isn't possible to set LVS_OWNERDATA after creation */
- if (g_is_below_5)
- {
- win_skip("set LVS_OWNERDATA after creation leads to crash on < 5.80\n");
- }
- else
- {
- hwnd = create_listview_control(LVS_REPORT);
- ok(hwnd != NULL, "failed to create a listview window\n");
- style = GetWindowLongPtrA(hwnd, GWL_STYLE);
- ok(!(style & LVS_OWNERDATA) && style, "LVS_OWNERDATA isn't expected\n");
+ /* Setting LVS_OWNERDATA after creation leads to crash on older versions < 5.80 */
+ hwnd = create_listview_control(LVS_REPORT);
+ ok(hwnd != NULL, "failed to create a listview window\n");
+ style = GetWindowLongPtrA(hwnd, GWL_STYLE);
+ ok(!(style & LVS_OWNERDATA) && style, "LVS_OWNERDATA isn't expected\n");
- flush_sequences(sequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
- ret = SetWindowLongPtrA(hwnd, GWL_STYLE, style | LVS_OWNERDATA);
- ok(ret == style, "Expected set GWL_STYLE to succeed\n");
- ok_sequence(sequences, LISTVIEW_SEQ_INDEX, listview_ownerdata_switchto_seq,
- "try to switch to LVS_OWNERDATA seq", FALSE);
+ ret = SetWindowLongPtrA(hwnd, GWL_STYLE, style | LVS_OWNERDATA);
+ ok(ret == style, "Expected set GWL_STYLE to succeed\n");
+ ok_sequence(sequences, LISTVIEW_SEQ_INDEX, listview_ownerdata_switchto_seq,
+ "try to switch to LVS_OWNERDATA seq", FALSE);
- style = GetWindowLongPtrA(hwnd, GWL_STYLE);
- ok(!(style & LVS_OWNERDATA), "LVS_OWNERDATA isn't expected\n");
- DestroyWindow(hwnd);
- }
+ style = GetWindowLongPtrA(hwnd, GWL_STYLE);
+ ok(!(style & LVS_OWNERDATA), "LVS_OWNERDATA isn't expected\n");
+ DestroyWindow(hwnd);
/* try to set LVS_OWNERDATA after creation just having it */
hwnd = create_listview_control(LVS_OWNERDATA | LVS_REPORT);
@@ -3174,28 +3139,20 @@ static void test_ownerdata(void)
"try to switch to LVS_OWNERDATA seq", FALSE);
DestroyWindow(hwnd);
- /* try to remove LVS_OWNERDATA after creation just having it */
- if (g_is_below_5)
- {
- win_skip("remove LVS_OWNERDATA after creation leads to crash on < 5.80\n");
- }
- else
- {
- hwnd = create_listview_control(LVS_OWNERDATA | LVS_REPORT);
- ok(hwnd != NULL, "failed to create a listview window\n");
- style = GetWindowLongPtrA(hwnd, GWL_STYLE);
- ok(style & LVS_OWNERDATA, "LVS_OWNERDATA is expected\n");
+ hwnd = create_listview_control(LVS_OWNERDATA | LVS_REPORT);
+ ok(hwnd != NULL, "failed to create a listview window\n");
+ style = GetWindowLongPtrA(hwnd, GWL_STYLE);
+ ok(style & LVS_OWNERDATA, "LVS_OWNERDATA is expected\n");
- flush_sequences(sequences, NUM_MSG_SEQUENCES);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
- ret = SetWindowLongPtrA(hwnd, GWL_STYLE, style & ~LVS_OWNERDATA);
- ok(ret == style, "Expected set GWL_STYLE to succeed\n");
- ok_sequence(sequences, LISTVIEW_SEQ_INDEX, listview_ownerdata_switchto_seq,
- "try to switch to LVS_OWNERDATA seq", FALSE);
- style = GetWindowLongPtrA(hwnd, GWL_STYLE);
- ok(style & LVS_OWNERDATA, "LVS_OWNERDATA is expected\n");
- DestroyWindow(hwnd);
- }
+ ret = SetWindowLongPtrA(hwnd, GWL_STYLE, style & ~LVS_OWNERDATA);
+ ok(ret == style, "Expected set GWL_STYLE to succeed\n");
+ ok_sequence(sequences, LISTVIEW_SEQ_INDEX, listview_ownerdata_switchto_seq,
+ "try to switch to LVS_OWNERDATA seq", FALSE);
+ style = GetWindowLongPtrA(hwnd, GWL_STYLE);
+ ok(style & LVS_OWNERDATA, "LVS_OWNERDATA is expected\n");
+ DestroyWindow(hwnd);
/* try select an item */
hwnd = create_listview_control(LVS_OWNERDATA | LVS_REPORT);
@@ -4624,27 +4581,6 @@ static void test_indentation(void)
DestroyWindow(hwnd);
}
-static INT CALLBACK DummyCompareEx(LPARAM first, LPARAM second, LPARAM param)
-{
- return 0;
-}
-
-static BOOL is_below_comctl_5(void)
-{
- HWND hwnd;
- BOOL ret;
-
- hwnd = create_listview_control(LVS_REPORT);
- ok(hwnd != NULL, "failed to create a listview window\n");
- insert_item(hwnd, 0);
-
- ret = SendMessageA(hwnd, LVM_SORTITEMSEX, 0, (LPARAM)&DummyCompareEx);
-
- DestroyWindow(hwnd);
-
- return !ret;
-}
-
static void test_get_set_view(void)
{
HWND hwnd;
@@ -6700,8 +6636,6 @@ START_TEST(listview)
hwndparent = create_parent_window(FALSE);
flush_sequences(sequences, NUM_MSG_SEQUENCES);
- g_is_below_5 = is_below_comctl_5();
-
test_header_notification();
test_header_notification2();
test_images();
--
2.28.0
1
0
[PATCH vkd3d] vkd3d-common: Correctly escape whitespace characters in debugstr_*().
by Zebediah Figura Oct. 5, 2020
by Zebediah Figura Oct. 5, 2020
Oct. 5, 2020
Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com>
---
libs/vkd3d-common/debug.c | 66 +++++++++++++--------------------------
1 file changed, 21 insertions(+), 45 deletions(-)
diff --git a/libs/vkd3d-common/debug.c b/libs/vkd3d-common/debug.c
index 33deed65..5e49cf10 100644
--- a/libs/vkd3d-common/debug.c
+++ b/libs/vkd3d-common/debug.c
@@ -114,6 +114,24 @@ const char *vkd3d_dbg_sprintf(const char *fmt, ...)
return buffer;
}
+static int get_escape_char(int c)
+{
+ switch (c)
+ {
+ case '"':
+ case '\\':
+ return c;
+ case '\t':
+ return 't';
+ case '\n':
+ return 'n';
+ case '\r':
+ return 'r';
+ default:
+ return 0;
+ }
+}
+
const char *debugstr_a(const char *str)
{
char *buffer, *ptr;
@@ -127,21 +145,7 @@ const char *debugstr_a(const char *str)
*ptr++ = '"';
while ((c = *str++) && ptr <= buffer + VKD3D_DEBUG_BUFFER_SIZE - 8)
{
- int escape_char;
-
- switch (c)
- {
- case '"':
- case '\\':
- case '\n':
- case '\r':
- case '\t':
- escape_char = c;
- break;
- default:
- escape_char = 0;
- break;
- }
+ int escape_char = get_escape_char(c);
if (escape_char)
{
@@ -187,21 +191,7 @@ static const char *debugstr_w16(const uint16_t *wstr)
*ptr++ = '"';
while ((c = *wstr++) && ptr <= buffer + VKD3D_DEBUG_BUFFER_SIZE - 10)
{
- int escape_char;
-
- switch (c)
- {
- case '"':
- case '\\':
- case '\n':
- case '\r':
- case '\t':
- escape_char = c;
- break;
- default:
- escape_char = 0;
- break;
- }
+ int escape_char = get_escape_char(c);
if (escape_char)
{
@@ -247,21 +237,7 @@ static const char *debugstr_w32(const uint32_t *wstr)
*ptr++ = '"';
while ((c = *wstr++) && ptr <= buffer + VKD3D_DEBUG_BUFFER_SIZE - 10)
{
- int escape_char;
-
- switch (c)
- {
- case '"':
- case '\\':
- case '\n':
- case '\r':
- case '\t':
- escape_char = c;
- break;
- default:
- escape_char = 0;
- break;
- }
+ int escape_char = get_escape_char(c);
if (escape_char)
{
--
2.28.0
2
1