From 0c54dfe7bac6f01d3716bff86e7c84561ad73b7b Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 6 Sep 2010 22:18:55 +0200 Subject: [PATCH] wined3d: Getting the current vertex shader should never fail. --- dlls/d3d8/device.c | 5 ++--- dlls/d3d9/device.c | 22 +++++++--------------- dlls/wined3d/device.c | 20 ++++++++++---------- include/wine/wined3d.idl | 3 +-- 4 files changed, 20 insertions(+), 30 deletions(-) diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c index 59e318c43ad..d1edac45b41 100644 --- a/dlls/d3d8/device.c +++ b/dlls/d3d8/device.c @@ -1960,7 +1960,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShader(IDirect3DDevice8 *ifa static HRESULT WINAPI IDirect3DDevice8Impl_DeleteVertexShader(LPDIRECT3DDEVICE8 iface, DWORD pShader) { IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface; IDirect3DVertexShader8Impl *shader; - IWineD3DVertexShader *cur = NULL; + IWineD3DVertexShader *cur; TRACE("iface %p, shader %#x.\n", iface, pShader); @@ -1974,8 +1974,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_DeleteVertexShader(LPDIRECT3DDEVICE return D3DERR_INVALIDCALL; } - IWineD3DDevice_GetVertexShader(This->WineD3DDevice, &cur); - + cur = IWineD3DDevice_GetVertexShader(This->WineD3DDevice); if (cur) { if (cur == shader->wineD3DVertexShader) IDirect3DDevice8_SetVertexShader(iface, 0); diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c index 7c10c434cb0..5b03a9f1e1c 100644 --- a/dlls/d3d9/device.c +++ b/dlls/d3d9/device.c @@ -2219,34 +2219,26 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShader(IDirect3DDevice9Ex *i IDirect3DVertexShader9 **shader) { IWineD3DVertexShader *wined3d_shader; - HRESULT hr; TRACE("iface %p, shader %p.\n", iface, shader); wined3d_mutex_lock(); - hr = IWineD3DDevice_GetVertexShader(((IDirect3DDevice9Impl *)iface)->WineD3DDevice, &wined3d_shader); - if (SUCCEEDED(hr)) + wined3d_shader = IWineD3DDevice_GetVertexShader(((IDirect3DDevice9Impl *)iface)->WineD3DDevice); + if (wined3d_shader) { - if (wined3d_shader) - { - *shader = IWineD3DVertexShader_GetParent(wined3d_shader); - IDirect3DVertexShader9_AddRef(*shader); - IWineD3DVertexShader_Release(wined3d_shader); - } - else - { - *shader = NULL; - } + *shader = IWineD3DVertexShader_GetParent(wined3d_shader); + IDirect3DVertexShader9_AddRef(*shader); + IWineD3DVertexShader_Release(wined3d_shader); } else { - WARN("Failed to get vertex shader, hr %#x.\n", hr); + *shader = NULL; } wined3d_mutex_unlock(); TRACE("Returning %p.\n", *shader); - return hr; + return D3D_OK; } static HRESULT WINAPI IDirect3DDevice9Impl_SetVertexShaderConstantF(IDirect3DDevice9Ex *iface, diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 6cd07bbf12f..2197a5f30b9 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3208,18 +3208,18 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShader(IWineD3DDevice *iface, return WINED3D_OK; } -static HRESULT WINAPI IWineD3DDeviceImpl_GetVertexShader(IWineD3DDevice *iface, IWineD3DVertexShader** ppShader) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; +static IWineD3DVertexShader * WINAPI IWineD3DDeviceImpl_GetVertexShader(IWineD3DDevice *iface) +{ + IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface; + IWineD3DVertexShader *shader; - if (NULL == ppShader) { - return WINED3DERR_INVALIDCALL; - } - *ppShader = This->stateBlock->vertexShader; - if( NULL != *ppShader) - IWineD3DVertexShader_AddRef(*ppShader); + TRACE("iface %p.\n", iface); - TRACE("(%p) : returning %p\n", This, *ppShader); - return WINED3D_OK; + shader = device->stateBlock->vertexShader; + if (shader) IWineD3DVertexShader_AddRef(shader); + + TRACE("Returning %p.\n", shader); + return shader; } static HRESULT WINAPI IWineD3DDeviceImpl_SetVertexShaderConstantB( diff --git a/include/wine/wined3d.idl b/include/wine/wined3d.idl index 230d012957a..0b29432b0c1 100644 --- a/include/wine/wined3d.idl +++ b/include/wine/wined3d.idl @@ -3221,8 +3221,7 @@ interface IWineD3DDevice : IUnknown HRESULT SetVertexShader( [in] IWineD3DVertexShader *shader ); - HRESULT GetVertexShader( - [out] IWineD3DVertexShader **shader + IWineD3DVertexShader *GetVertexShader( ); HRESULT SetVertexShaderConstantB( [in] UINT start_register,