Henri Verbeet : d2d1: Only draw if the geometry has any faces in d2d_d3d_render_target_FillGeometry ().
Module: wine Branch: master Commit: 4460006fbd1185d55567b5cd754a50bf2e9bed8f URL: http://source.winehq.org/git/wine.git/?a=commit;h=4460006fbd1185d55567b5cd75... Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Mon Aug 17 12:55:17 2015 +0200 d2d1: Only draw if the geometry has any faces in d2d_d3d_render_target_FillGeometry(). --- 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) {
participants (1)
-
Alexandre Julliard