HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShader(LPDIRECT3DDEVICE9EX iface, IDirect3DVertexShader9** ppShader) { IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface; IWineD3DVertexShader *pShader; HRESULT hrc = D3D_OK; TRACE("iface %p, shader %p.\n", iface, ppShader); wined3d_mutex_lock(); hrc = IWineD3DDevice_GetVertexShader(This->WineD3DDevice, &pShader); if (SUCCEEDED(hrc)) { if (pShader) { hrc = IWineD3DVertexShader_GetParent(pShader, (IUnknown **)ppShader); IWineD3DVertexShader_Release(pShader); } else { *ppShader = NULL; } } else { WARN("(%p) : Call to IWineD3DDevice_GetVertexShader failed %u (device %p)\n", This, hrc, This->WineD3DDevice); } wined3d_mutex_unlock(); TRACE("(%p) : returning %p\n", This, *ppShader); return hrc; }
HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShader(LPDIRECT3DDEVICE9EX iface, IDirect3DVertexShader9** ppShader) { IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface; IWineD3DVertexShader *pShader; HRESULT hrc = D3D_OK; TRACE("(%p) : Relay device@%p\n", This, This->WineD3DDevice); EnterCriticalSection(&d3d9_cs); hrc = IWineD3DDevice_GetVertexShader(This->WineD3DDevice, &pShader); if (SUCCEEDED(hrc)) { if (pShader) { hrc = IWineD3DVertexShader_GetParent(pShader, (IUnknown **)ppShader); IWineD3DVertexShader_Release(pShader); } else { *ppShader = NULL; } } else { WARN("(%p) : Call to IWineD3DDevice_GetVertexShader failed %u (device %p)\n", This, hrc, This->WineD3DDevice); } LeaveCriticalSection(&d3d9_cs); TRACE("(%p) : returning %p\n", This, *ppShader); return hrc; }