[PATCH 2/2] d2d1: Check for NULL pointer when releasing previous render target view
Nikolay Sivov
nsivov at codeweavers.com
Tue Dec 27 18:06:41 CST 2016
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
It's normal to have rtv set to NULL during Resize(), when it's first reset to NULL
explicitly to switch surfaces.
dlls/d2d1/render_target.c | 3 ++-
dlls/d2d1/tests/d2d1.c | 6 ++++++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/dlls/d2d1/render_target.c b/dlls/d2d1/render_target.c
index 0a70897c22..187e1e0f94 100644
--- a/dlls/d2d1/render_target.c
+++ b/dlls/d2d1/render_target.c
@@ -2375,7 +2375,8 @@ HRESULT d2d_d3d_render_target_create_rtv(ID2D1RenderTarget *iface, IDXGISurface1
render_target->pixel_size.width = surface_desc.Width;
render_target->pixel_size.height = surface_desc.Height;
- ID3D10RenderTargetView_Release(render_target->view);
+ if (render_target->view)
+ ID3D10RenderTargetView_Release(render_target->view);
render_target->view = view;
return S_OK;
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c
index cde8579f0b..5df5b6e3f0 100644
--- a/dlls/d2d1/tests/d2d1.c
+++ b/dlls/d2d1/tests/d2d1.c
@@ -3129,6 +3129,7 @@ static void test_hwnd_target(void)
ID2D1HwndRenderTarget *rt;
ID2D1Factory *factory;
ID3D10Device1 *device;
+ D2D1_SIZE_U size;
HRESULT hr;
if (!(device = create_device()))
@@ -3166,6 +3167,11 @@ static void test_hwnd_target(void)
hr = ID2D1Factory_CreateHwndRenderTarget(factory, &desc, &hwnd_rt_desc, &rt);
ok(SUCCEEDED(hr), "Failed to create render target, hr %#x.\n", hr);
+ size.width = 128;
+ size.height = 64;
+ hr = ID2D1HwndRenderTarget_Resize(rt, &size);
+ ok(SUCCEEDED(hr), "Failed to resize render target, hr %#x.\n", hr);
+
ID2D1HwndRenderTarget_Release(rt);
DestroyWindow(hwnd_rt_desc.hwnd);
--
2.11.0
More information about the wine-patches
mailing list