Rico Schüller : d3dx9: Use init function for ID3DXBuffer.
Alexandre Julliard
julliard at winehq.org
Wed Mar 30 13:15:41 CDT 2011
Module: wine
Branch: master
Commit: 22abfd6edce6d396ea4cf54426ff8f6aafd41ee6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=22abfd6edce6d396ea4cf54426ff8f6aafd41ee6
Author: Rico Schüller <kgbricola at web.de>
Date: Wed Mar 30 12:51:49 2011 +0200
d3dx9: Use init function for ID3DXBuffer.
---
dlls/d3dx9_36/core.c | 36 +++++++++++++++++++++++++++---------
1 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/dlls/d3dx9_36/core.c b/dlls/d3dx9_36/core.c
index d94fae5..06a8305 100644
--- a/dlls/d3dx9_36/core.c
+++ b/dlls/d3dx9_36/core.c
@@ -116,27 +116,45 @@ static const struct ID3DXBufferVtbl ID3DXBufferImpl_Vtbl =
ID3DXBufferImpl_GetBufferSize
};
+static HRESULT d3dx9_buffer_init(struct ID3DXBufferImpl *buffer, DWORD size)
+{
+ buffer->ID3DXBuffer_iface.lpVtbl = &ID3DXBufferImpl_Vtbl;
+ buffer->ref = 1;
+ buffer->size = size;
+
+ buffer->buffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
+ if (!buffer->buffer)
+ {
+ ERR("Failed to allocate buffer memory\n");
+ return E_OUTOFMEMORY;
+ }
+
+ return D3D_OK;
+}
+
HRESULT WINAPI D3DXCreateBuffer(DWORD size, LPD3DXBUFFER *buffer)
{
struct ID3DXBufferImpl *object;
+ HRESULT hr;
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
- if (object == NULL)
+ if (!object)
{
- *buffer = NULL;
+ ERR("Failed to allocate buffer memory\n");
return E_OUTOFMEMORY;
}
- object->ID3DXBuffer_iface.lpVtbl = &ID3DXBufferImpl_Vtbl;
- object->ref = 1;
- object->size = size;
- object->buffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
- if (object->buffer == NULL)
+
+ hr = d3dx9_buffer_init(object, size);
+ if (FAILED(hr))
{
+ WARN("Failed to initialize buffer, hr %#x.\n", hr);
HeapFree(GetProcessHeap(), 0, object);
- *buffer = NULL;
- return E_OUTOFMEMORY;
+ return hr;
}
*buffer = &object->ID3DXBuffer_iface;
+
+ TRACE("Created ID3DBuffer %p\n", *buffer);
+
return D3D_OK;
}
More information about the wine-cvs
mailing list