From: Nikolay Sivov <nsivov@codeweavers.com> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=59551 Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/d2d1/geometry.c | 3 ++- dlls/d2d1/tests/d2d1.c | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c index 8ed81c5d8dc..68de4c2193c 100644 --- a/dlls/d2d1/geometry.c +++ b/dlls/d2d1/geometry.c @@ -6291,7 +6291,8 @@ static void d2d_transformed_geometry_stream(struct d2d_geometry *geometry, { D2D_MATRIX_3X2_F m = geometry->transform; - d2d_matrix_multiply(&m, transform); + if (transform) + d2d_matrix_multiply(&m, transform); d2d_geometry_stream(geometry->u.transformed.src_geometry, &m, sink); } diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index 2d64e8440f4..cb6081695a0 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -11559,6 +11559,7 @@ static void test_colour_space(BOOL d3d11) static void test_geometry_group(BOOL d3d11) { + ID2D1TransformedGeometry *transformed_geometry; struct d2d1_test_context ctx; ID2D1Geometry *geometries[2]; ID2D1GeometryGroup *group; @@ -11646,8 +11647,23 @@ static void test_geometry_group(BOOL d3d11) rect.left, rect.top, rect.right, rect.bottom); ID2D1GeometryGroup_Release(group); - ID2D1PathGeometry_Release(path); + /* Group using transformed geometry */ + set_matrix_identity(&matrix); + scale_matrix(&matrix, 2.0f, 4.0f); + hr = ID2D1Factory_CreateTransformedGeometry(ctx.factory, (ID2D1Geometry *)path, &matrix, + &transformed_geometry); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + + hr = ID2D1Factory_CreateGeometryGroup(ctx.factory, D2D1_FILL_MODE_ALTERNATE, + (ID2D1Geometry **)&transformed_geometry, 1, &group); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + + ID2D1GeometryGroup_Release(group); + + ID2D1TransformedGeometry_Release(transformed_geometry); + + ID2D1PathGeometry_Release(path); release_test_context(&ctx); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10418