Henri Verbeet : ddraw: Add a separate function for material initialization.

Alexandre Julliard julliard at winehq.org
Thu Aug 19 11:44:02 CDT 2010


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

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Wed Aug 18 19:26:22 2010 +0200

ddraw: Add a separate function for material initialization.

---

 dlls/ddraw/ddraw.c         |    6 +-----
 dlls/ddraw/ddraw_private.h |    6 +-----
 dlls/ddraw/material.c      |   15 ++++++++++++---
 3 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 28af7d0..7541671 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -4432,11 +4432,7 @@ static HRESULT WINAPI d3d3_CreateMaterial(IDirect3D3 *iface, IDirect3DMaterial3
         return DDERR_OUTOFMEMORY;
     }
 
-    object->lpVtbl = &IDirect3DMaterial3_Vtbl;
-    object->IDirect3DMaterial2_vtbl = &IDirect3DMaterial2_Vtbl;
-    object->IDirect3DMaterial_vtbl = &IDirect3DMaterial_Vtbl;
-    object->ref = 1;
-    object->ddraw = ddraw_from_d3d3(iface);
+    d3d_material_init(object, ddraw_from_d3d3(iface));
 
     TRACE("Created material %p.\n", object);
     *material = (IDirect3DMaterial3 *)object;
diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h
index f7ea61d..6ea61fe 100644
--- a/dlls/ddraw/ddraw_private.h
+++ b/dlls/ddraw/ddraw_private.h
@@ -548,13 +548,9 @@ struct IDirect3DMaterialImpl
     DWORD Handle;
 };
 
-/* VTables in various versions */
-extern const IDirect3DMaterialVtbl IDirect3DMaterial_Vtbl DECLSPEC_HIDDEN;
-extern const IDirect3DMaterial2Vtbl IDirect3DMaterial2_Vtbl DECLSPEC_HIDDEN;
-extern const IDirect3DMaterial3Vtbl IDirect3DMaterial3_Vtbl DECLSPEC_HIDDEN;
-
 /* Helper functions */
 void material_activate(IDirect3DMaterialImpl* This) DECLSPEC_HIDDEN;
+void d3d_material_init(IDirect3DMaterialImpl *material, IDirectDrawImpl *ddraw) DECLSPEC_HIDDEN;
 
 /*****************************************************************************
  * IDirect3DViewport - Wraps to D3D7
diff --git a/dlls/ddraw/material.c b/dlls/ddraw/material.c
index 68da7ff..10f4ab5 100644
--- a/dlls/ddraw/material.c
+++ b/dlls/ddraw/material.c
@@ -448,7 +448,7 @@ void material_activate(IDirect3DMaterialImpl* This)
     IDirect3DDevice7_SetMaterial((IDirect3DDevice7 *)This->active_device, &d3d7mat);
 }
 
-const IDirect3DMaterial3Vtbl IDirect3DMaterial3_Vtbl =
+static const struct IDirect3DMaterial3Vtbl d3d_material3_vtbl =
 {
     /*** IUnknown Methods ***/
     IDirect3DMaterialImpl_QueryInterface,
@@ -460,7 +460,7 @@ const IDirect3DMaterial3Vtbl IDirect3DMaterial3_Vtbl =
     IDirect3DMaterialImpl_GetHandle,
 };
 
-const IDirect3DMaterial2Vtbl IDirect3DMaterial2_Vtbl =
+static const struct IDirect3DMaterial2Vtbl d3d_material2_vtbl =
 {
     /*** IUnknown Methods ***/
     Thunk_IDirect3DMaterialImpl_2_QueryInterface,
@@ -472,7 +472,7 @@ const IDirect3DMaterial2Vtbl IDirect3DMaterial2_Vtbl =
     Thunk_IDirect3DMaterialImpl_2_GetHandle,
 };
 
-const IDirect3DMaterialVtbl IDirect3DMaterial_Vtbl =
+static const struct IDirect3DMaterialVtbl d3d_material1_vtbl =
 {
     /*** IUnknown Methods ***/
     Thunk_IDirect3DMaterialImpl_1_QueryInterface,
@@ -486,3 +486,12 @@ const IDirect3DMaterialVtbl IDirect3DMaterial_Vtbl =
     IDirect3DMaterialImpl_Reserve,
     IDirect3DMaterialImpl_Unreserve
 };
+
+void d3d_material_init(IDirect3DMaterialImpl *material, IDirectDrawImpl *ddraw)
+{
+    material->lpVtbl = &d3d_material3_vtbl;
+    material->IDirect3DMaterial2_vtbl = &d3d_material2_vtbl;
+    material->IDirect3DMaterial_vtbl = &d3d_material1_vtbl;
+    material->ref = 1;
+    material->ddraw = ddraw;
+}




More information about the wine-cvs mailing list