From 796b2dd0a597da3b9bf1481da93a07db04415a48 Mon Sep 17 00:00:00 2001
From: David Adam <david.adam.cnrs@gmail.com>
Date: Mon, 17 Dec 2007 23:12:33 +0100
Subject: [PATCH] d3dx8: Implement D3DXCreateMatrixStack.

---
 dlls/d3dx8/d3dx8.spec |  2 +-
 dlls/d3dx8/math.c     | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/dlls/d3dx8/d3dx8.spec b/dlls/d3dx8/d3dx8.spec
index 28b772e688c..0ccfdf26e55 100644
--- a/dlls/d3dx8/d3dx8.spec
+++ b/dlls/d3dx8/d3dx8.spec
@@ -68,7 +68,7 @@
 @ stdcall D3DXPlaneTransform(ptr ptr ptr)
 @ stdcall D3DXColorAdjustSaturation(ptr ptr long)
 @ stdcall D3DXColorAdjustContrast(ptr ptr long)
-@ stub D3DXCreateMatrixStack
+@ stdcall D3DXCreateMatrixStack(long ptr)
 @ stdcall D3DXCreateFont(ptr ptr ptr)
 @ stub D3DXCreateFontIndirect
 @ stub D3DXCreateSprite
diff --git a/dlls/d3dx8/math.c b/dlls/d3dx8/math.c
index 33a24fca4b0..0446198062f 100644
--- a/dlls/d3dx8/math.c
+++ b/dlls/d3dx8/math.c
@@ -587,6 +587,23 @@ D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm)
 
 /*_________________D3DXMatrixStack____________________*/
 
+HRESULT WINAPI D3DXCreateMatrixStack(DWORD flags, LPD3DXMATRIXSTACK* ppstack)
+{
+    ID3DXMatrixStackImpl* object;
+
+    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ID3DXMatrixStackImpl));
+    if ( object == NULL )
+    {
+     *ppstack = NULL;
+     return E_OUTOFMEMORY;
+    }
+    object->lpVtbl = &ID3DXMatrixStack_Vtbl;
+    object->ref = 1;
+    object->current = 0;
+    *ppstack = (LPD3DXMATRIXSTACK)object;
+    return D3D_OK;
+}
+
 static HRESULT WINAPI ID3DXMatrixStackImpl_QueryInterface(ID3DXMatrixStack *iface, REFIID riid, void **ppobj)
 {
     ID3DXMatrixStackImpl *This = (ID3DXMatrixStackImpl *)iface;
-- 
GitLab