Henri Verbeet : d3d8: Set the vertex declaration' s shader handle in vertexdeclaration_init().

Alexandre Julliard julliard at winehq.org
Fri Sep 25 10:25:17 CDT 2009


Module: wine
Branch: master
Commit: 27723affc9d6c2b611bd9684ad21c10ba657dfe8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=27723affc9d6c2b611bd9684ad21c10ba657dfe8

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Fri Sep 25 13:31:41 2009 +0200

d3d8: Set the vertex declaration's shader handle in vertexdeclaration_init().

---

 dlls/d3d8/d3d8_private.h      |    2 +-
 dlls/d3d8/vertexdeclaration.c |    3 ++-
 dlls/d3d8/vertexshader.c      |    4 +---
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/dlls/d3d8/d3d8_private.h b/dlls/d3d8/d3d8_private.h
index 8adc9e3..2218f31 100644
--- a/dlls/d3d8/d3d8_private.h
+++ b/dlls/d3d8/d3d8_private.h
@@ -542,7 +542,7 @@ typedef struct {
 } IDirect3DVertexDeclaration8Impl;
 
 HRESULT vertexdeclaration_init(IDirect3DVertexDeclaration8Impl *declaration,
-        IDirect3DDevice8Impl *device, const DWORD *elements) DECLSPEC_HIDDEN;
+        IDirect3DDevice8Impl *device, const DWORD *elements, DWORD shader_handle) DECLSPEC_HIDDEN;
 HRESULT vertexdeclaration_init_fvf(IDirect3DVertexDeclaration8Impl *declaration,
         IDirect3DDevice8Impl *device, DWORD fvf) DECLSPEC_HIDDEN;
 
diff --git a/dlls/d3d8/vertexdeclaration.c b/dlls/d3d8/vertexdeclaration.c
index fad58fb..1387a8c 100644
--- a/dlls/d3d8/vertexdeclaration.c
+++ b/dlls/d3d8/vertexdeclaration.c
@@ -376,7 +376,7 @@ static const struct wined3d_parent_ops d3d8_vertexdeclaration_wined3d_parent_ops
 };
 
 HRESULT vertexdeclaration_init(IDirect3DVertexDeclaration8Impl *declaration,
-        IDirect3DDevice8Impl *device, const DWORD *elements)
+        IDirect3DDevice8Impl *device, const DWORD *elements, DWORD shader_handle)
 {
     WINED3DVERTEXELEMENT *wined3d_elements;
     UINT wined3d_element_count;
@@ -384,6 +384,7 @@ HRESULT vertexdeclaration_init(IDirect3DVertexDeclaration8Impl *declaration,
 
     declaration->lpVtbl = &Direct3DVertexDeclaration8_Vtbl;
     declaration->ref_count = 1;
+    declaration->shader_handle = shader_handle;
 
     wined3d_element_count = convert_to_wined3d_declaration(elements, &declaration->elements_size, &wined3d_elements);
     declaration->elements = HeapAlloc(GetProcessHeap(), 0, declaration->elements_size);
diff --git a/dlls/d3d8/vertexshader.c b/dlls/d3d8/vertexshader.c
index aacf15c..92bd1fe 100644
--- a/dlls/d3d8/vertexshader.c
+++ b/dlls/d3d8/vertexshader.c
@@ -113,7 +113,7 @@ static HRESULT vertexshader_create_vertexdeclaration(IDirect3DDevice8Impl *devic
         return D3DERR_OUTOFVIDEOMEMORY;
     }
 
-    hr = vertexdeclaration_init(object, device, declaration);
+    hr = vertexdeclaration_init(object, device, declaration, shader_handle);
     if (FAILED(hr))
     {
         WARN("Failed to initialize vertex declaration, hr %#x.\n", hr);
@@ -121,8 +121,6 @@ static HRESULT vertexshader_create_vertexdeclaration(IDirect3DDevice8Impl *devic
         return hr;
     }
 
-    object->shader_handle = shader_handle;
-
     TRACE("Created vertex declaration %p.\n", object);
     *decl_ptr = (IDirect3DVertexDeclaration8 *)object;
 




More information about the wine-cvs mailing list