[ros-diffs] [gbrunmar] 35593: D3D9: * Replace D3D9BaseObject's dependency on Direct3DDevice9 * More HAL device init stuff

gbrunmar at svn.reactos.org gbrunmar at svn.reactos.org
Sun Aug 24 12:15:45 CEST 2008


Author: gbrunmar
Date: Sun Aug 24 05:15:44 2008
New Revision: 35593

URL: http://svn.reactos.org/svn/reactos?rev=35593&view=rev
Log:
D3D9:
* Replace D3D9BaseObject's dependency on Direct3DDevice9
* More HAL device init stuff

Modified:
    trunk/reactos/dll/directx/d3d9/d3d9_baseobject.c
    trunk/reactos/dll/directx/d3d9/d3d9_baseobject.h
    trunk/reactos/dll/directx/d3d9/d3d9_swapchain.c
    trunk/reactos/dll/directx/d3d9/device.c

Modified: trunk/reactos/dll/directx/d3d9/d3d9_baseobject.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/d3d9/d3d9_baseobject.c?rev=35593&r1=35592&r2=35593&view=diff
==============================================================================
--- trunk/reactos/dll/directx/d3d9/d3d9_baseobject.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/d3d9/d3d9_baseobject.c [iso-8859-1] Sun Aug 24 05:15:44 2008
@@ -25,18 +25,18 @@
     D3D9BaseObject_Destroy
 };
 
-VOID InitD3D9BaseObject(D3D9BaseObject* pBaseObject, enum REF_TYPE RefType, struct _Direct3DDevice9_INT* pBaseDevice)
+VOID InitD3D9BaseObject(D3D9BaseObject* pBaseObject, enum REF_TYPE RefType, IUnknown* pUnknown)
 {
     pBaseObject->lpVtbl = &D3D9BaseObject_Vtbl;
     pBaseObject->RefType = RefType;
-    pBaseObject->pBaseDevice = pBaseDevice;
+    pBaseObject->pUnknown = pUnknown;
 }
 
 ULONG D3D9BaseObject_AddRef(D3D9BaseObject* pBaseObject)
 {
-    if (pBaseObject->pBaseDevice)
+    if (pBaseObject->pUnknown)
     {
-        pBaseObject->pBaseDevice->lpVtbl->AddRef((IDirect3DDevice9*)&pBaseObject->pBaseDevice->lpVtbl);
+        pBaseObject->pUnknown->lpVtbl->AddRef((IUnknown*) &pBaseObject->pUnknown->lpVtbl);
     }
 
     return InterlockedIncrement(&pBaseObject->lRefCnt);
@@ -52,9 +52,9 @@
 
         if (Ref == 0)
         {
-            if (pBaseObject->pBaseDevice)
+            if (pBaseObject->pUnknown)
             {
-                pBaseObject->pBaseDevice->lpVtbl->Release((IDirect3DDevice9*)&pBaseObject->pBaseDevice->lpVtbl);
+                pBaseObject->pUnknown->lpVtbl->Release((IUnknown*) &pBaseObject->pUnknown->lpVtbl);
             }
         }
     }

Modified: trunk/reactos/dll/directx/d3d9/d3d9_baseobject.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/d3d9/d3d9_baseobject.h?rev=35593&r1=35592&r2=35593&view=diff
==============================================================================
--- trunk/reactos/dll/directx/d3d9/d3d9_baseobject.h [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/d3d9/d3d9_baseobject.h [iso-8859-1] Sun Aug 24 05:15:44 2008
@@ -27,14 +27,14 @@
 /* 0x0000 */    ID3D9BaseObjectVtbl* lpVtbl;
 /* 0x0004 */    LONG lRefCnt;
 /* 0x0008 */    DWORD dwNumUsed;
-/* 0x000c */    struct _Direct3DDevice9_INT* pBaseDevice;
+/* 0x000c */    IUnknown* pUnknown;
 /* 0x0010 */    DWORD dwUnknown0010;    // Index? Unique id?
 /* 0x0014 */    HANDLE hKernelHandle;
 /* 0x0018 */    LPDWORD dwUnknown0018;
 /* 0x001c */    enum REF_TYPE RefType;
 } D3D9BaseObject;
 
-VOID InitD3D9BaseObject(D3D9BaseObject* pBaseObject, enum REF_TYPE RefType, struct _Direct3DDevice9_INT* pBaseDevice);
+VOID InitD3D9BaseObject(D3D9BaseObject* pBaseObject, enum REF_TYPE RefType, IUnknown* pUnknown);
 
 ULONG D3D9BaseObject_AddRef(D3D9BaseObject* pBaseObject);
 ULONG D3D9BaseObject_Release(D3D9BaseObject* pBaseObject);

Modified: trunk/reactos/dll/directx/d3d9/d3d9_swapchain.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/d3d9/d3d9_swapchain.c?rev=35593&r1=35592&r2=35593&view=diff
==============================================================================
--- trunk/reactos/dll/directx/d3d9/d3d9_swapchain.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/d3d9/d3d9_swapchain.c [iso-8859-1] Sun Aug 24 05:15:44 2008
@@ -119,7 +119,7 @@
         return NULL;
     }
 
-    InitD3D9BaseObject((D3D9BaseObject*) &pThisSwapChain->BaseObject.lpVtbl, RefType, pBaseDevice);
+    InitD3D9BaseObject((D3D9BaseObject*) &pThisSwapChain->BaseObject.lpVtbl, RefType, (IUnknown*) &pBaseDevice->lpVtbl);
 
     pThisSwapChain->lpVtbl = &Direct3DSwapChain9_Vtbl;
 
@@ -149,6 +149,7 @@
     }
 
     pThisSwapChain->PresentParameters = pPresentationParameters[pThisSwapChain->ChainIndex];
+    pThisSwapChain->SwapEffect = pPresentationParameters->SwapEffect;
 
     return Direct3DSwapChain9_Reset(pThisSwapChain, pPresentationParameters);
 }

Modified: trunk/reactos/dll/directx/d3d9/device.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/d3d9/device.c?rev=35593&r1=35592&r2=35593&view=diff
==============================================================================
--- trunk/reactos/dll/directx/d3d9/device.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/d3d9/device.c [iso-8859-1] Sun Aug 24 05:15:44 2008
@@ -51,6 +51,10 @@
 
     pThisBaseDevice->lpVtbl = &Direct3DDevice9_Vtbl;
     pThisBaseDevice->lRefCnt = 1;
+    pThisBaseDevice->dwProcessId = GetCurrentThreadId();
+    pThisBaseDevice->pUnknown = (IUnknown*) &pThisBaseDevice->lpVtbl;
+    InitializeCriticalSection(&pThisBaseDevice->CriticalSection);
+
     pThisBaseDevice->pDirect3D9 = pDirect3D9;
     pThisBaseDevice->DeviceType = DeviceType;
     pThisBaseDevice->hWnd = hFocusWindow;



More information about the Ros-diffs mailing list