Henri Verbeet : d3drm: Initialize the actual array in d3drm_visual_array_create() as well.
Alexandre Julliard
julliard at winehq.org
Mon Oct 28 15:13:05 CDT 2013
Module: wine
Branch: master
Commit: c0d05d9f4f2d7b7d14d8b4f5e49789eb6e9d1882
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c0d05d9f4f2d7b7d14d8b4f5e49789eb6e9d1882
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Mon Oct 28 11:46:40 2013 +0100
d3drm: Initialize the actual array in d3drm_visual_array_create() as well.
---
dlls/d3drm/frame.c | 38 +++++++++++++++++++-------------------
1 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/dlls/d3drm/frame.c b/dlls/d3drm/frame.c
index 26501c2..28e222f 100644
--- a/dlls/d3drm/frame.c
+++ b/dlls/d3drm/frame.c
@@ -315,15 +315,32 @@ static const struct IDirect3DRMVisualArrayVtbl d3drm_visual_array_vtbl =
d3drm_visual_array_GetElement,
};
-static struct d3drm_visual_array *d3drm_visual_array_create(void)
+static struct d3drm_visual_array *d3drm_visual_array_create(unsigned int visual_count, IDirect3DRMVisual **visuals)
{
struct d3drm_visual_array *array;
+ unsigned int i;
if (!(array = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*array))))
return NULL;
array->IDirect3DRMVisualArray_iface.lpVtbl = &d3drm_visual_array_vtbl;
array->ref = 1;
+ array->size = visual_count;
+
+ if (visual_count)
+ {
+ if (!(array->visuals = HeapAlloc(GetProcessHeap(), 0, visual_count * sizeof(*array->visuals))))
+ {
+ HeapFree(GetProcessHeap(), 0, array);
+ return NULL;
+ }
+
+ for (i = 0; i < visual_count; ++i)
+ {
+ array->visuals[i] = visuals[i];
+ IDirect3DRMVisual_AddRef(array->visuals[i]);
+ }
+ }
return array;
}
@@ -765,26 +782,9 @@ static HRESULT WINAPI d3drm_frame2_GetVisuals(IDirect3DRMFrame2 *iface, IDirect3
if (!visuals)
return D3DRMERR_BADVALUE;
- if (!(array = d3drm_visual_array_create()))
+ if (!(array = d3drm_visual_array_create(frame->nb_visuals, frame->visuals)))
return E_OUTOFMEMORY;
- array->size = frame->nb_visuals;
- if (frame->nb_visuals)
- {
- ULONG i;
-
- if (!(array->visuals = HeapAlloc(GetProcessHeap(), 0, frame->nb_visuals * sizeof(*array->visuals))))
- {
- HeapFree(GetProcessHeap(), 0, array);
- return E_OUTOFMEMORY;
- }
- for (i = 0; i < frame->nb_visuals; ++i)
- {
- array->visuals[i] = frame->visuals[i];
- IDirect3DRMVisual_AddRef(frame->visuals[i]);
- }
- }
-
*visuals = &array->IDirect3DRMVisualArray_iface;
return D3DRM_OK;
More information about the wine-cvs
mailing list