[PATCH 3/5] d3drm: Use existing helper to manage visuals array
Nikolay Sivov
nsivov at codeweavers.com
Mon Jul 10 05:40:48 CDT 2017
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/d3drm/d3drm_private.h | 4 ++--
dlls/d3drm/frame.c | 33 +++++++--------------------------
2 files changed, 9 insertions(+), 28 deletions(-)
diff --git a/dlls/d3drm/d3drm_private.h b/dlls/d3drm/d3drm_private.h
index 16c1415182..861c3abeb4 100644
--- a/dlls/d3drm/d3drm_private.h
+++ b/dlls/d3drm/d3drm_private.h
@@ -68,8 +68,8 @@ struct d3drm_frame
SIZE_T nb_children;
SIZE_T children_size;
IDirect3DRMFrame3 **children;
- ULONG nb_visuals;
- ULONG visuals_capacity;
+ SIZE_T nb_visuals;
+ SIZE_T visuals_size;
IDirect3DRMVisual **visuals;
SIZE_T nb_lights;
SIZE_T lights_size;
diff --git a/dlls/d3drm/frame.c b/dlls/d3drm/frame.c
index 7d89686ad0..aa7633b07c 100644
--- a/dlls/d3drm/frame.c
+++ b/dlls/d3drm/frame.c
@@ -1064,9 +1064,8 @@ static HRESULT WINAPI d3drm_frame1_AddRotation(IDirect3DRMFrame *iface,
static HRESULT WINAPI d3drm_frame3_AddVisual(IDirect3DRMFrame3 *iface, IUnknown *visual)
{
- struct d3drm_frame *This = impl_from_IDirect3DRMFrame3(iface);
+ struct d3drm_frame *frame = impl_from_IDirect3DRMFrame3(iface);
ULONG i;
- IDirect3DRMVisual** visuals;
TRACE("iface %p, visual %p.\n", iface, visual);
@@ -1074,33 +1073,15 @@ static HRESULT WINAPI d3drm_frame3_AddVisual(IDirect3DRMFrame3 *iface, IUnknown
return D3DRMERR_BADOBJECT;
/* Check if already existing and return gracefully without increasing ref count */
- for (i = 0; i < This->nb_visuals; i++)
- if (This->visuals[i] == (IDirect3DRMVisual *)visual)
+ for (i = 0; i < frame->nb_visuals; i++)
+ if (frame->visuals[i] == (IDirect3DRMVisual *)visual)
return D3DRM_OK;
- if ((This->nb_visuals + 1) > This->visuals_capacity)
- {
- ULONG new_capacity;
-
- if (!This->visuals_capacity)
- {
- new_capacity = 16;
- visuals = HeapAlloc(GetProcessHeap(), 0, new_capacity * sizeof(IDirect3DRMVisual*));
- }
- else
- {
- new_capacity = This->visuals_capacity * 2;
- visuals = HeapReAlloc(GetProcessHeap(), 0, This->visuals, new_capacity * sizeof(IDirect3DRMVisual*));
- }
-
- if (!visuals)
- return E_OUTOFMEMORY;
-
- This->visuals_capacity = new_capacity;
- This->visuals = visuals;
- }
+ if (!d3drm_array_reserve((void **)&frame->visuals, &frame->visuals_size,
+ frame->nb_visuals + 1, sizeof(*frame->visuals)))
+ return E_OUTOFMEMORY;
- This->visuals[This->nb_visuals++] = (IDirect3DRMVisual *)visual;
+ frame->visuals[frame->nb_visuals++] = (IDirect3DRMVisual *)visual;
IDirect3DRMVisual_AddRef(visual);
return D3DRM_OK;
--
2.13.2
More information about the wine-patches
mailing list