[PATCH 3/6] d2d1: Remove pointer indirections in d2d_gradient_create.
Rémi Bernon
rbernon at codeweavers.com
Thu Jun 24 02:35:33 CDT 2021
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49395
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
dlls/d2d1/brush.c | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/dlls/d2d1/brush.c b/dlls/d2d1/brush.c
index 1fe9b5e8f70..67c7d701b82 100644
--- a/dlls/d2d1/brush.c
+++ b/dlls/d2d1/brush.c
@@ -128,17 +128,19 @@ static const struct ID2D1GradientStopCollectionVtbl d2d_gradient_vtbl =
};
HRESULT d2d_gradient_create(ID2D1Factory *factory, ID3D10Device *device, const D2D1_GRADIENT_STOP *stops,
- UINT32 stop_count, D2D1_GAMMA gamma, D2D1_EXTEND_MODE extend_mode, struct d2d_gradient **gradient)
+ UINT32 stop_count, D2D1_GAMMA gamma, D2D1_EXTEND_MODE extend_mode, struct d2d_gradient **out)
{
D3D10_SHADER_RESOURCE_VIEW_DESC srv_desc;
D3D10_SUBRESOURCE_DATA buffer_data;
ID3D10ShaderResourceView *view;
+ struct d2d_gradient *gradient;
D3D10_BUFFER_DESC buffer_desc;
struct d2d_vec4 *data;
ID3D10Buffer *buffer;
unsigned int i;
HRESULT hr;
+ *out = NULL;
if (!(data = heap_calloc(stop_count, 2 * sizeof(*data))))
{
ERR("Failed to allocate data.\n");
@@ -185,7 +187,7 @@ HRESULT d2d_gradient_create(ID2D1Factory *factory, ID3D10Device *device, const D
return hr;
}
- if (!(*gradient = heap_alloc_zero(sizeof(**gradient))))
+ if (!(gradient = heap_alloc_zero(sizeof(*gradient))))
{
ID3D10ShaderResourceView_Release(view);
return E_OUTOFMEMORY;
@@ -196,21 +198,22 @@ HRESULT d2d_gradient_create(ID2D1Factory *factory, ID3D10Device *device, const D
if (extend_mode != D2D1_EXTEND_MODE_CLAMP)
FIXME("Ignoring extend mode %#x.\n", extend_mode);
- (*gradient)->ID2D1GradientStopCollection_iface.lpVtbl = &d2d_gradient_vtbl;
- (*gradient)->refcount = 1;
- ID2D1Factory_AddRef((*gradient)->factory = factory);
- (*gradient)->view = view;
+ gradient->ID2D1GradientStopCollection_iface.lpVtbl = &d2d_gradient_vtbl;
+ gradient->refcount = 1;
+ ID2D1Factory_AddRef(gradient->factory = factory);
+ gradient->view = view;
- (*gradient)->stop_count = stop_count;
- if (!((*gradient)->stops = heap_calloc(stop_count, sizeof(*stops))))
+ gradient->stop_count = stop_count;
+ if (!(gradient->stops = heap_calloc(stop_count, sizeof(*stops))))
{
ID3D10ShaderResourceView_Release(view);
- heap_free(*gradient);
+ heap_free(gradient);
return E_OUTOFMEMORY;
}
- memcpy((*gradient)->stops, stops, stop_count * sizeof(*stops));
+ memcpy(gradient->stops, stops, stop_count * sizeof(*stops));
- TRACE("Created gradient %p.\n", *gradient);
+ TRACE("Created gradient %p.\n", gradient);
+ *out = gradient;
return S_OK;
}
--
2.32.0
More information about the wine-devel
mailing list