Stefan Dösinger : wined3d: Add a wined3d private WINED3DSBT_RECORDED.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Aug 15 04:34:03 CDT 2007


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Fri Aug  3 22:48:42 2007 +0200

wined3d: Add a wined3d private WINED3DSBT_RECORDED.

---

 dlls/d3d8/device.c           |    6 ++++++
 dlls/d3d9/stateblock.c       |    6 ++++++
 dlls/ddraw/device.c          |    5 +++++
 include/wine/wined3d_types.h |    1 +
 4 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
index 0b2436d..74a0d13 100644
--- a/dlls/d3d8/device.c
+++ b/dlls/d3d8/device.c
@@ -1165,6 +1165,12 @@ static HRESULT WINAPI IDirect3DDevice8Impl_CreateStateBlock(LPDIRECT3DDEVICE8 if
 
    TRACE("(%p) Relay\n", This);
 
+   if(Type != D3DSBT_ALL         && Type != D3DSBT_PIXELSTATE &&
+      Type != D3DSBT_VERTEXSTATE                              ) {
+       WARN("Unexpected stateblock type, returning D3DERR_INVALIDCALL\n");
+       return D3DERR_INVALIDCALL;
+   }
+
    object  = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DStateBlock8Impl));
    if (NULL == object) {
       *pToken = 0;
diff --git a/dlls/d3d9/stateblock.c b/dlls/d3d9/stateblock.c
index 2cd79ea..33eda64 100644
--- a/dlls/d3d9/stateblock.c
+++ b/dlls/d3d9/stateblock.c
@@ -121,6 +121,12 @@ HRESULT WINAPI IDirect3DDevice9Impl_CreateStateBlock(LPDIRECT3DDEVICE9 iface, D3
    HRESULT hrc = D3D_OK;
    
    TRACE("(%p) Relay\n", This);
+
+   if(Type != D3DSBT_ALL         && Type != D3DSBT_PIXELSTATE &&
+      Type != D3DSBT_VERTEXSTATE                              ) {
+       WARN("Unexpected stateblock type, returning D3DERR_INVALIDCALL\n");
+       return D3DERR_INVALIDCALL;
+   }
    
    object  = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DStateBlock9Impl));
    if (NULL == object) return E_OUTOFMEMORY;
diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
index 56e5cf3..3091017 100644
--- a/dlls/ddraw/device.c
+++ b/dlls/ddraw/device.c
@@ -5070,6 +5070,11 @@ IDirect3DDeviceImpl_7_CreateStateBlock(IDirect3DDevice7 *iface,
         WARN("BlockHandle == NULL, returning DDERR_INVALIDPARAMS\n");
         return DDERR_INVALIDPARAMS;
     }
+    if(Type != D3DSBT_ALL         && Type != D3DSBT_PIXELSTATE &&
+       Type != D3DSBT_VERTEXSTATE                              ) {
+        WARN("Unexpected stateblock type, returning DDERR_INVALIDPARAMS\n");
+        return DDERR_INVALIDPARAMS;
+    }
 
     EnterCriticalSection(&ddraw_cs);
     *BlockHandle = IDirect3DDeviceImpl_CreateHandle(This);
diff --git a/include/wine/wined3d_types.h b/include/wine/wined3d_types.h
index baebdc3..b7dc333 100644
--- a/include/wine/wined3d_types.h
+++ b/include/wine/wined3d_types.h
@@ -1208,6 +1208,7 @@ typedef enum _WINED3DSTATEBLOCKTYPE {
     WINED3DSBT_ALL           = 1,
     WINED3DSBT_PIXELSTATE    = 2,
     WINED3DSBT_VERTEXSTATE   = 3,
+    WINED3DSBT_RECORDED      = 4,       /* WineD3D private */
 
     WINED3DSBT_FORCE_DWORD   = 0xffffffff
 } WINED3DSTATEBLOCKTYPE;




More information about the wine-cvs mailing list