[PATCH v2 06/12] d2d1/tests: Factor test render target creation in d2d1_test_context.
Rémi Bernon
rbernon at codeweavers.com
Tue Jan 12 05:34:46 CST 2021
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
dlls/d2d1/tests/d2d1.c | 104 +++++++++++++++++++----------------------
1 file changed, 47 insertions(+), 57 deletions(-)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c
index d6f5e670276..55628ef11ff 100644
--- a/dlls/d2d1/tests/d2d1.c
+++ b/dlls/d2d1/tests/d2d1.c
@@ -48,6 +48,7 @@ struct d2d1_test_context
HWND window;
IDXGISwapChain *swapchain;
IDXGISurface *surface;
+ ID2D1RenderTarget *rt;
};
struct resource_readback
@@ -770,6 +771,7 @@ static ID2D1RenderTarget *create_render_target_desc(IDXGISurface *surface, const
ok(SUCCEEDED(hr), "Failed to create render target, hr %#x.\n", hr);
ID2D1Factory_Release(factory);
+ if (FAILED(hr)) return NULL;
return render_target;
}
@@ -791,6 +793,17 @@ static ID2D1RenderTarget *create_render_target(IDXGISurface *surface)
#define release_test_context(ctx) release_test_context_(__LINE__, ctx)
static void release_test_context_(unsigned int line, struct d2d1_test_context *ctx)
{
+ ID2D1Factory *factory;
+ ULONG ref;
+
+ if (ctx->rt)
+ {
+ ID2D1RenderTarget_GetFactory(ctx->rt, &factory);
+ ID2D1RenderTarget_Release(ctx->rt);
+ ref = ID2D1Factory_Release(factory);
+ ok(!ref, "Factory has %u references left.\n", ref);
+ }
+
if (ctx->surface) IDXGISurface_Release(ctx->surface);
if (ctx->swapchain) IDXGISwapChain_Release(ctx->swapchain);
if (ctx->window) DestroyWindow(ctx->window);
@@ -834,6 +847,14 @@ static BOOL init_test_context_(unsigned int line, struct d2d1_test_context *ctx)
return FALSE;
}
+ ctx->rt = create_render_target(ctx->surface);
+ ok(!!ctx->rt, "Failed to create render target.\n");
+ if (!ctx->rt)
+ {
+ release_test_context(ctx);
+ return FALSE;
+ }
+
return TRUE;
}
@@ -1166,8 +1187,7 @@ static void test_clip(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_GetDpi(rt, &dpi_x, &dpi_y);
ok(dpi_x == 96.0f, "Got unexpected dpi_x %.8e.\n", dpi_x);
@@ -1372,8 +1392,7 @@ static void test_state_block(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_GetFactory(rt, &factory);
hr = DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, &IID_IDWriteFactory, (IUnknown **)&dwrite_factory);
ok(SUCCEEDED(hr), "Failed to create dwrite factory, hr %#x.\n", hr);
@@ -1616,8 +1635,7 @@ static void test_color_brush(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -1743,8 +1761,7 @@ static void test_bitmap_brush(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -2035,8 +2052,7 @@ static void test_linear_brush(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -2229,8 +2245,7 @@ static void test_radial_brush(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -2502,7 +2517,6 @@ static void test_path_geometry(void)
BOOL match, contains;
D2D1_COLOR_F color;
D2D1_RECT_F rect;
- ULONG refcount;
UINT32 count;
HRESULT hr;
@@ -2823,8 +2837,7 @@ static void test_path_geometry(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
@@ -3544,8 +3557,7 @@ static void test_path_geometry(void)
ID2D1SolidColorBrush_Release(brush);
ID2D1RenderTarget_Release(rt);
- refcount = ID2D1Factory_Release(factory);
- ok(!refcount, "Factory has %u references left.\n", refcount);
+ ID2D1Factory_Release(factory);
release_test_context(&ctx);
}
@@ -3912,8 +3924,7 @@ static void test_bitmap_formats(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
bitmap_desc.dpiX = 96.0f;
bitmap_desc.dpiY = 96.0f;
@@ -3969,8 +3980,7 @@ static void test_alpha_mode(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -4430,8 +4440,7 @@ static void test_bitmap_updates(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -4526,8 +4535,7 @@ static void test_opacity_brush(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
@@ -4661,8 +4669,7 @@ static void test_opacity_brush(void)
ID2D1BitmapBrush_Release(opacity_brush);
ID2D1SolidColorBrush_Release(color_brush);
ID2D1RenderTarget_Release(rt);
- refcount = ID2D1Factory_Release(factory);
- ok(!refcount, "Factory has %u references left.\n", refcount);
+ ID2D1Factory_Release(factory);
release_test_context(&ctx);
}
@@ -5671,8 +5678,7 @@ static void test_gradient(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
stops2[0].position = 0.5f;
set_color(&stops2[0].color, 1.0f, 1.0f, 0.0f, 1.0f);
@@ -5720,15 +5726,13 @@ static void test_draw_geometry(void)
D2D1_ELLIPSE ellipse;
D2D1_COLOR_F color;
D2D1_RECT_F rect;
- ULONG refcount;
HRESULT hr;
BOOL match;
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
@@ -6614,8 +6618,7 @@ static void test_draw_geometry(void)
ID2D1SolidColorBrush_Release(brush);
ID2D1RenderTarget_Release(rt);
- refcount = ID2D1Factory_Release(factory);
- ok(!refcount, "Factory has %u references left.\n", refcount);
+ ID2D1Factory_Release(factory);
release_test_context(&ctx);
}
@@ -6635,15 +6638,13 @@ static void test_fill_geometry(void)
D2D1_ELLIPSE ellipse;
D2D1_COLOR_F color;
D2D1_RECT_F rect;
- ULONG refcount;
HRESULT hr;
BOOL match;
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
@@ -7416,8 +7417,7 @@ static void test_fill_geometry(void)
ID2D1SolidColorBrush_Release(brush);
ID2D1RenderTarget_Release(rt);
- refcount = ID2D1Factory_Release(factory);
- ok(!refcount, "Factory has %u references left.\n", refcount);
+ ID2D1Factory_Release(factory);
release_test_context(&ctx);
}
@@ -7559,14 +7559,12 @@ static void test_layer(void)
ID2D1RenderTarget *rt;
ID2D1Layer *layer;
D2D1_SIZE_F size;
- ULONG refcount;
HRESULT hr;
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
@@ -7591,8 +7589,7 @@ static void test_layer(void)
ID2D1Layer_Release(layer);
ID2D1RenderTarget_Release(rt);
- refcount = ID2D1Factory_Release(factory);
- ok(!refcount, "Factory has %u references left.\n", refcount);
+ ID2D1Factory_Release(factory);
release_test_context(&ctx);
}
@@ -7606,15 +7603,13 @@ static void test_bezier_intersect(void)
ID2D1RenderTarget *rt;
ID2D1Factory *factory;
D2D1_COLOR_F color;
- ULONG refcount;
HRESULT hr;
BOOL match;
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
@@ -7729,8 +7724,7 @@ static void test_bezier_intersect(void)
ID2D1SolidColorBrush_Release(brush);
ID2D1RenderTarget_Release(rt);
- refcount = ID2D1Factory_Release(factory);
- ok(!refcount, "Factory has %u references left.\n", refcount);
+ ID2D1Factory_Release(factory);
release_test_context(&ctx);
}
@@ -8033,8 +8027,7 @@ static void test_bitmap_surface(void)
}
/* DXGI target */
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
hr = ID2D1RenderTarget_QueryInterface(rt, &IID_ID2D1DeviceContext, (void **)&device_context);
ok(SUCCEEDED(hr), "Failed to get device context, hr %#x.\n", hr);
@@ -8280,8 +8273,7 @@ static void test_device_context(void)
ID2D1DeviceContext_Release(device_context);
/* DXGI target */
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
hr = ID2D1RenderTarget_QueryInterface(rt, &IID_ID2D1DeviceContext, (void **)&device_context);
ok(SUCCEEDED(hr), "Failed to get device context interface, hr %#x.\n", hr);
@@ -8805,8 +8797,7 @@ todo_wine
ID2D1RenderTarget_Release(rt);
ID2D1DeviceContext_Release(device_context);
- refcount = ID2D1Factory1_Release(factory);
- ok(!refcount, "Factory has %u references left.\n", refcount);
+ ID2D1Factory1_Release(factory);
release_test_context(&ctx);
}
@@ -9166,8 +9157,7 @@ static void test_wic_bitmap_format(void)
if (!init_test_context(&ctx))
return;
- rt = create_render_target(ctx.surface);
- ok(!!rt, "Failed to create render target.\n");
+ ID2D1RenderTarget_AddRef(rt = ctx.rt);
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
hr = CoCreateInstance(&CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER,
--
2.29.2
More information about the wine-devel
mailing list