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