[PATCH] d2d1: Don't update target dpi if only one SetDpi() argument is zero
Nikolay Sivov
nsivov at codeweavers.com
Tue Jan 19 15:43:33 CST 2016
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/d2d1/render_target.c | 2 ++
dlls/d2d1/tests/d2d1.c | 13 +++++++++++++
2 files changed, 15 insertions(+)
diff --git a/dlls/d2d1/render_target.c b/dlls/d2d1/render_target.c
index e3978ef..49ceb30 100644
--- a/dlls/d2d1/render_target.c
+++ b/dlls/d2d1/render_target.c
@@ -1436,6 +1436,8 @@ static void STDMETHODCALLTYPE d2d_d3d_render_target_SetDpi(ID2D1RenderTarget *if
dpi_x = 96.0f;
dpi_y = 96.0f;
}
+ else if (dpi_x == 0.0f || dpi_y == 0.0f)
+ return;
render_target->dpi_x = dpi_x;
render_target->dpi_y = dpi_y;
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c
index b721c26..7c554d2 100644
--- a/dlls/d2d1/tests/d2d1.c
+++ b/dlls/d2d1/tests/d2d1.c
@@ -587,6 +587,19 @@ static void test_clip(void)
ok(dpi_x == 96.0f, "Got unexpected dpi_x %.8e.\n", dpi_x);
ok(dpi_y == 96.0f, "Got unexpected dpi_y %.8e.\n", dpi_y);
+ ID2D1RenderTarget_SetDpi(rt, 192.0f, 192.0f);
+ ID2D1RenderTarget_SetDpi(rt, 0.0f, 96.0f);
+ ID2D1RenderTarget_GetDpi(rt, &dpi_x, &dpi_y);
+ ok(dpi_x == 192.0f, "Got unexpected dpi_x %.8e.\n", dpi_x);
+ ok(dpi_y == 192.0f, "Got unexpected dpi_y %.8e.\n", dpi_y);
+
+ ID2D1RenderTarget_SetDpi(rt, 96.0f, 0.0f);
+ ID2D1RenderTarget_GetDpi(rt, &dpi_x, &dpi_y);
+ ok(dpi_x == 192.0f, "Got unexpected dpi_x %.8e.\n", dpi_x);
+ ok(dpi_y == 192.0f, "Got unexpected dpi_y %.8e.\n", dpi_y);
+
+ ID2D1RenderTarget_SetDpi(rt, 96.0f, 96.0f);
+
/* Transformations apply to clip rects, the effective clip rect is the
* (axis-aligned) bounding box of the transformed clip rect. */
set_point(&point, 320.0f, 240.0f);
--
2.7.0.rc3
More information about the wine-patches
mailing list