[PATCH 4/6] d3d9: Allocate WINED3DCAPS on stack.

Józef Kucia jkucia at codeweavers.com
Mon Feb 20 06:12:13 CST 2017


Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 dlls/d3d9/d3d9_private.h | 150 +++++++++++++++++++++++------------------------
 dlls/d3d9/device.c       |  10 +---
 dlls/d3d9/directx.c      |   9 +--
 3 files changed, 81 insertions(+), 88 deletions(-)

diff --git a/dlls/d3d9/d3d9_private.h b/dlls/d3d9/d3d9_private.h
index 941ef38..88c3cfa 100644
--- a/dlls/d3d9/d3d9_private.h
+++ b/dlls/d3d9/d3d9_private.h
@@ -49,81 +49,81 @@ void present_parameters_from_wined3d_swapchain_desc(D3DPRESENT_PARAMETERS *prese
         const struct wined3d_swapchain_desc *swapchain_desc) DECLSPEC_HIDDEN;
 
 #define WINECAPSTOD3D9CAPS(_pD3D9Caps, _pWineCaps) \
-    _pD3D9Caps->DeviceType                        = (D3DDEVTYPE) _pWineCaps->DeviceType; \
-    _pD3D9Caps->AdapterOrdinal                    = _pWineCaps->AdapterOrdinal; \
-    _pD3D9Caps->Caps                              = _pWineCaps->Caps; \
-    _pD3D9Caps->Caps2                             = _pWineCaps->Caps2; \
-    _pD3D9Caps->Caps3                             = _pWineCaps->Caps3; \
-    _pD3D9Caps->PresentationIntervals             = _pWineCaps->PresentationIntervals; \
-    _pD3D9Caps->CursorCaps                        = _pWineCaps->CursorCaps; \
-    _pD3D9Caps->DevCaps                           = _pWineCaps->DevCaps; \
-    _pD3D9Caps->PrimitiveMiscCaps                 = _pWineCaps->PrimitiveMiscCaps; \
-    _pD3D9Caps->RasterCaps                        = _pWineCaps->RasterCaps; \
-    _pD3D9Caps->ZCmpCaps                          = _pWineCaps->ZCmpCaps; \
-    _pD3D9Caps->SrcBlendCaps                      = _pWineCaps->SrcBlendCaps; \
-    _pD3D9Caps->DestBlendCaps                     = _pWineCaps->DestBlendCaps; \
-    _pD3D9Caps->AlphaCmpCaps                      = _pWineCaps->AlphaCmpCaps; \
-    _pD3D9Caps->ShadeCaps                         = _pWineCaps->ShadeCaps; \
-    _pD3D9Caps->TextureCaps                       = _pWineCaps->TextureCaps; \
-    _pD3D9Caps->TextureFilterCaps                 = _pWineCaps->TextureFilterCaps; \
-    _pD3D9Caps->CubeTextureFilterCaps             = _pWineCaps->CubeTextureFilterCaps; \
-    _pD3D9Caps->VolumeTextureFilterCaps           = _pWineCaps->VolumeTextureFilterCaps; \
-    _pD3D9Caps->TextureAddressCaps                = _pWineCaps->TextureAddressCaps; \
-    _pD3D9Caps->VolumeTextureAddressCaps          = _pWineCaps->VolumeTextureAddressCaps; \
-    _pD3D9Caps->LineCaps                          = _pWineCaps->LineCaps; \
-    _pD3D9Caps->MaxTextureWidth                   = _pWineCaps->MaxTextureWidth; \
-    _pD3D9Caps->MaxTextureHeight                  = _pWineCaps->MaxTextureHeight; \
-    _pD3D9Caps->MaxVolumeExtent                   = _pWineCaps->MaxVolumeExtent; \
-    _pD3D9Caps->MaxTextureRepeat                  = _pWineCaps->MaxTextureRepeat; \
-    _pD3D9Caps->MaxTextureAspectRatio             = _pWineCaps->MaxTextureAspectRatio; \
-    _pD3D9Caps->MaxAnisotropy                     = _pWineCaps->MaxAnisotropy; \
-    _pD3D9Caps->MaxVertexW                        = _pWineCaps->MaxVertexW; \
-    _pD3D9Caps->GuardBandLeft                     = _pWineCaps->GuardBandLeft; \
-    _pD3D9Caps->GuardBandTop                      = _pWineCaps->GuardBandTop; \
-    _pD3D9Caps->GuardBandRight                    = _pWineCaps->GuardBandRight; \
-    _pD3D9Caps->GuardBandBottom                   = _pWineCaps->GuardBandBottom; \
-    _pD3D9Caps->ExtentsAdjust                     = _pWineCaps->ExtentsAdjust; \
-    _pD3D9Caps->StencilCaps                       = _pWineCaps->StencilCaps; \
-    _pD3D9Caps->FVFCaps                           = _pWineCaps->FVFCaps; \
-    _pD3D9Caps->TextureOpCaps                     = _pWineCaps->TextureOpCaps; \
-    _pD3D9Caps->MaxTextureBlendStages             = _pWineCaps->MaxTextureBlendStages; \
-    _pD3D9Caps->MaxSimultaneousTextures           = _pWineCaps->MaxSimultaneousTextures; \
-    _pD3D9Caps->VertexProcessingCaps              = _pWineCaps->VertexProcessingCaps; \
-    _pD3D9Caps->MaxActiveLights                   = _pWineCaps->MaxActiveLights; \
-    _pD3D9Caps->MaxUserClipPlanes                 = _pWineCaps->MaxUserClipPlanes; \
-    _pD3D9Caps->MaxVertexBlendMatrices            = _pWineCaps->MaxVertexBlendMatrices; \
-    _pD3D9Caps->MaxVertexBlendMatrixIndex         = _pWineCaps->MaxVertexBlendMatrixIndex; \
-    _pD3D9Caps->MaxPointSize                      = _pWineCaps->MaxPointSize; \
-    _pD3D9Caps->MaxPrimitiveCount                 = _pWineCaps->MaxPrimitiveCount; \
-    _pD3D9Caps->MaxVertexIndex                    = _pWineCaps->MaxVertexIndex; \
-    _pD3D9Caps->MaxStreams                        = _pWineCaps->MaxStreams; \
-    _pD3D9Caps->MaxStreamStride                   = _pWineCaps->MaxStreamStride; \
-    _pD3D9Caps->VertexShaderVersion               = _pWineCaps->VertexShaderVersion; \
-    _pD3D9Caps->MaxVertexShaderConst              = _pWineCaps->MaxVertexShaderConst; \
-    _pD3D9Caps->PixelShaderVersion                = _pWineCaps->PixelShaderVersion; \
-    _pD3D9Caps->PixelShader1xMaxValue             = _pWineCaps->PixelShader1xMaxValue; \
-    _pD3D9Caps->DevCaps2                          = _pWineCaps->DevCaps2; \
-    _pD3D9Caps->MaxNpatchTessellationLevel        = _pWineCaps->MaxNpatchTessellationLevel; \
-    _pD3D9Caps->MasterAdapterOrdinal              = _pWineCaps->MasterAdapterOrdinal; \
-    _pD3D9Caps->AdapterOrdinalInGroup             = _pWineCaps->AdapterOrdinalInGroup; \
-    _pD3D9Caps->NumberOfAdaptersInGroup           = _pWineCaps->NumberOfAdaptersInGroup; \
-    _pD3D9Caps->DeclTypes                         = _pWineCaps->DeclTypes; \
-    _pD3D9Caps->NumSimultaneousRTs                = _pWineCaps->NumSimultaneousRTs; \
-    _pD3D9Caps->StretchRectFilterCaps             = _pWineCaps->StretchRectFilterCaps; \
-    _pD3D9Caps->VS20Caps.Caps                     = _pWineCaps->VS20Caps.caps; \
-    _pD3D9Caps->VS20Caps.DynamicFlowControlDepth  = _pWineCaps->VS20Caps.dynamic_flow_control_depth; \
-    _pD3D9Caps->VS20Caps.NumTemps                 = _pWineCaps->VS20Caps.temp_count; \
-    _pD3D9Caps->VS20Caps.StaticFlowControlDepth   = _pWineCaps->VS20Caps.static_flow_control_depth; \
-    _pD3D9Caps->PS20Caps.Caps                     = _pWineCaps->PS20Caps.caps; \
-    _pD3D9Caps->PS20Caps.DynamicFlowControlDepth  = _pWineCaps->PS20Caps.dynamic_flow_control_depth; \
-    _pD3D9Caps->PS20Caps.NumTemps                 = _pWineCaps->PS20Caps.temp_count; \
-    _pD3D9Caps->PS20Caps.StaticFlowControlDepth   = _pWineCaps->PS20Caps.static_flow_control_depth; \
-    _pD3D9Caps->PS20Caps.NumInstructionSlots      = _pWineCaps->PS20Caps.instruction_slot_count; \
-    _pD3D9Caps->VertexTextureFilterCaps           = _pWineCaps->VertexTextureFilterCaps; \
-    _pD3D9Caps->MaxVShaderInstructionsExecuted    = _pWineCaps->MaxVShaderInstructionsExecuted; \
-    _pD3D9Caps->MaxPShaderInstructionsExecuted    = _pWineCaps->MaxPShaderInstructionsExecuted; \
-    _pD3D9Caps->MaxVertexShader30InstructionSlots = _pWineCaps->MaxVertexShader30InstructionSlots; \
-    _pD3D9Caps->MaxPixelShader30InstructionSlots  = _pWineCaps->MaxPixelShader30InstructionSlots;
+    _pD3D9Caps->DeviceType                        = (D3DDEVTYPE) (_pWineCaps)->DeviceType; \
+    _pD3D9Caps->AdapterOrdinal                    = (_pWineCaps)->AdapterOrdinal; \
+    _pD3D9Caps->Caps                              = (_pWineCaps)->Caps; \
+    _pD3D9Caps->Caps2                             = (_pWineCaps)->Caps2; \
+    _pD3D9Caps->Caps3                             = (_pWineCaps)->Caps3; \
+    _pD3D9Caps->PresentationIntervals             = (_pWineCaps)->PresentationIntervals; \
+    _pD3D9Caps->CursorCaps                        = (_pWineCaps)->CursorCaps; \
+    _pD3D9Caps->DevCaps                           = (_pWineCaps)->DevCaps; \
+    _pD3D9Caps->PrimitiveMiscCaps                 = (_pWineCaps)->PrimitiveMiscCaps; \
+    _pD3D9Caps->RasterCaps                        = (_pWineCaps)->RasterCaps; \
+    _pD3D9Caps->ZCmpCaps                          = (_pWineCaps)->ZCmpCaps; \
+    _pD3D9Caps->SrcBlendCaps                      = (_pWineCaps)->SrcBlendCaps; \
+    _pD3D9Caps->DestBlendCaps                     = (_pWineCaps)->DestBlendCaps; \
+    _pD3D9Caps->AlphaCmpCaps                      = (_pWineCaps)->AlphaCmpCaps; \
+    _pD3D9Caps->ShadeCaps                         = (_pWineCaps)->ShadeCaps; \
+    _pD3D9Caps->TextureCaps                       = (_pWineCaps)->TextureCaps; \
+    _pD3D9Caps->TextureFilterCaps                 = (_pWineCaps)->TextureFilterCaps; \
+    _pD3D9Caps->CubeTextureFilterCaps             = (_pWineCaps)->CubeTextureFilterCaps; \
+    _pD3D9Caps->VolumeTextureFilterCaps           = (_pWineCaps)->VolumeTextureFilterCaps; \
+    _pD3D9Caps->TextureAddressCaps                = (_pWineCaps)->TextureAddressCaps; \
+    _pD3D9Caps->VolumeTextureAddressCaps          = (_pWineCaps)->VolumeTextureAddressCaps; \
+    _pD3D9Caps->LineCaps                          = (_pWineCaps)->LineCaps; \
+    _pD3D9Caps->MaxTextureWidth                   = (_pWineCaps)->MaxTextureWidth; \
+    _pD3D9Caps->MaxTextureHeight                  = (_pWineCaps)->MaxTextureHeight; \
+    _pD3D9Caps->MaxVolumeExtent                   = (_pWineCaps)->MaxVolumeExtent; \
+    _pD3D9Caps->MaxTextureRepeat                  = (_pWineCaps)->MaxTextureRepeat; \
+    _pD3D9Caps->MaxTextureAspectRatio             = (_pWineCaps)->MaxTextureAspectRatio; \
+    _pD3D9Caps->MaxAnisotropy                     = (_pWineCaps)->MaxAnisotropy; \
+    _pD3D9Caps->MaxVertexW                        = (_pWineCaps)->MaxVertexW; \
+    _pD3D9Caps->GuardBandLeft                     = (_pWineCaps)->GuardBandLeft; \
+    _pD3D9Caps->GuardBandTop                      = (_pWineCaps)->GuardBandTop; \
+    _pD3D9Caps->GuardBandRight                    = (_pWineCaps)->GuardBandRight; \
+    _pD3D9Caps->GuardBandBottom                   = (_pWineCaps)->GuardBandBottom; \
+    _pD3D9Caps->ExtentsAdjust                     = (_pWineCaps)->ExtentsAdjust; \
+    _pD3D9Caps->StencilCaps                       = (_pWineCaps)->StencilCaps; \
+    _pD3D9Caps->FVFCaps                           = (_pWineCaps)->FVFCaps; \
+    _pD3D9Caps->TextureOpCaps                     = (_pWineCaps)->TextureOpCaps; \
+    _pD3D9Caps->MaxTextureBlendStages             = (_pWineCaps)->MaxTextureBlendStages; \
+    _pD3D9Caps->MaxSimultaneousTextures           = (_pWineCaps)->MaxSimultaneousTextures; \
+    _pD3D9Caps->VertexProcessingCaps              = (_pWineCaps)->VertexProcessingCaps; \
+    _pD3D9Caps->MaxActiveLights                   = (_pWineCaps)->MaxActiveLights; \
+    _pD3D9Caps->MaxUserClipPlanes                 = (_pWineCaps)->MaxUserClipPlanes; \
+    _pD3D9Caps->MaxVertexBlendMatrices            = (_pWineCaps)->MaxVertexBlendMatrices; \
+    _pD3D9Caps->MaxVertexBlendMatrixIndex         = (_pWineCaps)->MaxVertexBlendMatrixIndex; \
+    _pD3D9Caps->MaxPointSize                      = (_pWineCaps)->MaxPointSize; \
+    _pD3D9Caps->MaxPrimitiveCount                 = (_pWineCaps)->MaxPrimitiveCount; \
+    _pD3D9Caps->MaxVertexIndex                    = (_pWineCaps)->MaxVertexIndex; \
+    _pD3D9Caps->MaxStreams                        = (_pWineCaps)->MaxStreams; \
+    _pD3D9Caps->MaxStreamStride                   = (_pWineCaps)->MaxStreamStride; \
+    _pD3D9Caps->VertexShaderVersion               = (_pWineCaps)->VertexShaderVersion; \
+    _pD3D9Caps->MaxVertexShaderConst              = (_pWineCaps)->MaxVertexShaderConst; \
+    _pD3D9Caps->PixelShaderVersion                = (_pWineCaps)->PixelShaderVersion; \
+    _pD3D9Caps->PixelShader1xMaxValue             = (_pWineCaps)->PixelShader1xMaxValue; \
+    _pD3D9Caps->DevCaps2                          = (_pWineCaps)->DevCaps2; \
+    _pD3D9Caps->MaxNpatchTessellationLevel        = (_pWineCaps)->MaxNpatchTessellationLevel; \
+    _pD3D9Caps->MasterAdapterOrdinal              = (_pWineCaps)->MasterAdapterOrdinal; \
+    _pD3D9Caps->AdapterOrdinalInGroup             = (_pWineCaps)->AdapterOrdinalInGroup; \
+    _pD3D9Caps->NumberOfAdaptersInGroup           = (_pWineCaps)->NumberOfAdaptersInGroup; \
+    _pD3D9Caps->DeclTypes                         = (_pWineCaps)->DeclTypes; \
+    _pD3D9Caps->NumSimultaneousRTs                = (_pWineCaps)->NumSimultaneousRTs; \
+    _pD3D9Caps->StretchRectFilterCaps             = (_pWineCaps)->StretchRectFilterCaps; \
+    _pD3D9Caps->VS20Caps.Caps                     = (_pWineCaps)->VS20Caps.caps; \
+    _pD3D9Caps->VS20Caps.DynamicFlowControlDepth  = (_pWineCaps)->VS20Caps.dynamic_flow_control_depth; \
+    _pD3D9Caps->VS20Caps.NumTemps                 = (_pWineCaps)->VS20Caps.temp_count; \
+    _pD3D9Caps->VS20Caps.StaticFlowControlDepth   = (_pWineCaps)->VS20Caps.static_flow_control_depth; \
+    _pD3D9Caps->PS20Caps.Caps                     = (_pWineCaps)->PS20Caps.caps; \
+    _pD3D9Caps->PS20Caps.DynamicFlowControlDepth  = (_pWineCaps)->PS20Caps.dynamic_flow_control_depth; \
+    _pD3D9Caps->PS20Caps.NumTemps                 = (_pWineCaps)->PS20Caps.temp_count; \
+    _pD3D9Caps->PS20Caps.StaticFlowControlDepth   = (_pWineCaps)->PS20Caps.static_flow_control_depth; \
+    _pD3D9Caps->PS20Caps.NumInstructionSlots      = (_pWineCaps)->PS20Caps.instruction_slot_count; \
+    _pD3D9Caps->VertexTextureFilterCaps           = (_pWineCaps)->VertexTextureFilterCaps; \
+    _pD3D9Caps->MaxVShaderInstructionsExecuted    = (_pWineCaps)->MaxVShaderInstructionsExecuted; \
+    _pD3D9Caps->MaxPShaderInstructionsExecuted    = (_pWineCaps)->MaxPShaderInstructionsExecuted; \
+    _pD3D9Caps->MaxVertexShader30InstructionSlots = (_pWineCaps)->MaxVertexShader30InstructionSlots; \
+    _pD3D9Caps->MaxPixelShader30InstructionSlots  = (_pWineCaps)->MaxPixelShader30InstructionSlots;
 
 struct d3d9
 {
diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c
index 6f17daa..7e56436 100644
--- a/dlls/d3d9/device.c
+++ b/dlls/d3d9/device.c
@@ -406,7 +406,7 @@ static HRESULT WINAPI d3d9_device_GetDirect3D(IDirect3DDevice9Ex *iface, IDirect
 static HRESULT WINAPI d3d9_device_GetDeviceCaps(IDirect3DDevice9Ex *iface, D3DCAPS9 *caps)
 {
     struct d3d9_device *device = impl_from_IDirect3DDevice9Ex(iface);
-    WINED3DCAPS *wined3d_caps;
+    WINED3DCAPS wined3d_caps;
     HRESULT hr;
 
     TRACE("iface %p, caps %p.\n", iface, caps);
@@ -414,17 +414,13 @@ static HRESULT WINAPI d3d9_device_GetDeviceCaps(IDirect3DDevice9Ex *iface, D3DCA
     if (!caps)
         return D3DERR_INVALIDCALL;
 
-    if (!(wined3d_caps = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*wined3d_caps))))
-        return D3DERR_INVALIDCALL; /* well this is what MSDN says to return */
-
     memset(caps, 0, sizeof(*caps));
 
     wined3d_mutex_lock();
-    hr = wined3d_device_get_device_caps(device->wined3d_device, wined3d_caps);
+    hr = wined3d_device_get_device_caps(device->wined3d_device, &wined3d_caps);
     wined3d_mutex_unlock();
 
-    WINECAPSTOD3D9CAPS(caps, wined3d_caps)
-    HeapFree(GetProcessHeap(), 0, wined3d_caps);
+    WINECAPSTOD3D9CAPS(caps, &wined3d_caps)
 
     /* Some functionality is implemented in d3d9.dll, not wined3d.dll. Add the needed caps */
     caps->DevCaps2 |= D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES;
diff --git a/dlls/d3d9/directx.c b/dlls/d3d9/directx.c
index c377992..2e6db8a 100644
--- a/dlls/d3d9/directx.c
+++ b/dlls/d3d9/directx.c
@@ -426,7 +426,7 @@ void filter_caps(D3DCAPS9* pCaps)
 static HRESULT WINAPI d3d9_GetDeviceCaps(IDirect3D9Ex *iface, UINT adapter, D3DDEVTYPE device_type, D3DCAPS9 *caps)
 {
     struct d3d9 *d3d9 = impl_from_IDirect3D9Ex(iface);
-    WINED3DCAPS *wined3d_caps;
+    WINED3DCAPS wined3d_caps;
     HRESULT hr;
 
     TRACE("iface %p, adapter %u, device_type %#x, caps %p.\n", iface, adapter, device_type, caps);
@@ -434,16 +434,13 @@ static HRESULT WINAPI d3d9_GetDeviceCaps(IDirect3D9Ex *iface, UINT adapter, D3DD
     if (!caps)
         return D3DERR_INVALIDCALL;
 
-    if (!(wined3d_caps = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINED3DCAPS))))
-        return D3DERR_INVALIDCALL; /*well this is what MSDN says to return*/
     memset(caps, 0, sizeof(*caps));
 
     wined3d_mutex_lock();
-    hr = wined3d_get_device_caps(d3d9->wined3d, adapter, device_type, wined3d_caps);
+    hr = wined3d_get_device_caps(d3d9->wined3d, adapter, device_type, &wined3d_caps);
     wined3d_mutex_unlock();
 
-    WINECAPSTOD3D9CAPS(caps, wined3d_caps)
-    HeapFree(GetProcessHeap(), 0, wined3d_caps);
+    WINECAPSTOD3D9CAPS(caps, &wined3d_caps)
 
     /* Some functionality is implemented in d3d9.dll, not wined3d.dll. Add the needed caps */
     caps->DevCaps2 |= D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES;
-- 
2.10.2




More information about the wine-patches mailing list