[PATCH 4/5] d2d1: Only draw if the geometry has any faces in d2d_d3d_render_target_FillGeometry().
Henri Verbeet
hverbeet at codeweavers.com
Mon Aug 17 05:55:17 CDT 2015
---
dlls/d2d1/render_target.c | 45 ++++++++++++++++++++++++---------------------
1 file changed, 24 insertions(+), 21 deletions(-)
diff --git a/dlls/d2d1/render_target.c b/dlls/d2d1/render_target.c
index c6bce45..7d80ef5 100644
--- a/dlls/d2d1/render_target.c
+++ b/dlls/d2d1/render_target.c
@@ -713,32 +713,35 @@ static void STDMETHODCALLTYPE d2d_d3d_render_target_FillGeometry(ID2D1RenderTarg
return;
}
- buffer_desc.ByteWidth = geometry_impl->face_count * sizeof(*geometry_impl->faces);
- buffer_desc.BindFlags = D3D10_BIND_INDEX_BUFFER;
- buffer_data.pSysMem = geometry_impl->faces;
-
- if (FAILED(hr = ID3D10Device_CreateBuffer(render_target->device, &buffer_desc, &buffer_data, &ib)))
+ if (geometry_impl->face_count)
{
- WARN("Failed to create index buffer, hr %#x.\n", hr);
- goto done;
- }
+ buffer_desc.ByteWidth = geometry_impl->face_count * sizeof(*geometry_impl->faces);
+ buffer_desc.BindFlags = D3D10_BIND_INDEX_BUFFER;
+ buffer_data.pSysMem = geometry_impl->faces;
- buffer_desc.ByteWidth = geometry_impl->vertex_count * sizeof(*geometry_impl->vertices);
- buffer_desc.BindFlags = D3D10_BIND_VERTEX_BUFFER;
- buffer_data.pSysMem = geometry_impl->vertices;
+ if (FAILED(hr = ID3D10Device_CreateBuffer(render_target->device, &buffer_desc, &buffer_data, &ib)))
+ {
+ WARN("Failed to create index buffer, hr %#x.\n", hr);
+ goto done;
+ }
- if (FAILED(hr = ID3D10Device_CreateBuffer(render_target->device, &buffer_desc, &buffer_data, &vb)))
- {
- ERR("Failed to create vertex buffer, hr %#x.\n", hr);
- ID3D10Buffer_Release(ib);
- goto done;
- }
+ buffer_desc.ByteWidth = geometry_impl->vertex_count * sizeof(*geometry_impl->vertices);
+ buffer_desc.BindFlags = D3D10_BIND_VERTEX_BUFFER;
+ buffer_data.pSysMem = geometry_impl->vertices;
- d2d_draw(render_target, D2D_SHAPE_TYPE_TRIANGLE, ib, 3 * geometry_impl->face_count, vb,
- sizeof(*geometry_impl->vertices), vs_cb, ps_cb, brush_impl);
+ if (FAILED(hr = ID3D10Device_CreateBuffer(render_target->device, &buffer_desc, &buffer_data, &vb)))
+ {
+ ERR("Failed to create vertex buffer, hr %#x.\n", hr);
+ ID3D10Buffer_Release(ib);
+ goto done;
+ }
- ID3D10Buffer_Release(vb);
- ID3D10Buffer_Release(ib);
+ d2d_draw(render_target, D2D_SHAPE_TYPE_TRIANGLE, ib, 3 * geometry_impl->face_count, vb,
+ sizeof(*geometry_impl->vertices), vs_cb, ps_cb, brush_impl);
+
+ ID3D10Buffer_Release(vb);
+ ID3D10Buffer_Release(ib);
+ }
if (geometry_impl->bezier_count)
{
--
2.1.4
More information about the wine-patches
mailing list