ChangeSet ID: 21160 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/08 06:46:21
Modified files: dlls/d3d9 : query.c
Log message: Oliver Stieber oliver_stieber@yahoo.co.uk Allow NULL ppQuery to be passed to CreateQuery.
Patch: http://cvs.winehq.org/patch.py?id=21160
Old revision New revision Changes Path 1.11 1.12 +29 -26 wine/dlls/d3d9/query.c
Index: wine/dlls/d3d9/query.c diff -u -p wine/dlls/d3d9/query.c:1.11 wine/dlls/d3d9/query.c:1.12 --- wine/dlls/d3d9/query.c:1.11 8 Nov 2005 12:46:21 -0000 +++ wine/dlls/d3d9/query.c 8 Nov 2005 12:46:21 -0000 @@ -119,32 +119,35 @@ const IDirect3DQuery9Vtbl Direct3DQuery9
/* IDirect3DDevice9 IDirect3DQuery9 Methods follow: */ HRESULT WINAPI IDirect3DDevice9Impl_CreateQuery(LPDIRECT3DDEVICE9 iface, D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery) { - IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface; - IDirect3DQuery9Impl *object = NULL; - HRESULT hr = D3D_OK; - - TRACE("(%p) Relay\n", This); - - /* Allocate the storage for the device */ - object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DQuery9Impl)); - if (NULL == object) { - FIXME("Allocation of memory failed\n"); - *ppQuery = NULL; - return D3DERR_OUTOFVIDEOMEMORY; - } - - object->lpVtbl = &Direct3DQuery9_Vtbl; - object->ref = 1; - hr = IWineD3DDevice_CreateQuery(This->WineD3DDevice, Type, &(object->wineD3DQuery), (IUnknown*)object); - - if (FAILED(hr)) { - /* free up object */ - FIXME("(%p) call to IWineD3DDevice_CreateQuery failed\n", This); - HeapFree(GetProcessHeap(), 0, object); - *ppQuery = NULL; - } else { - *ppQuery = (LPDIRECT3DQUERY9) object; - } - TRACE("(%p) : returning %p \n", This, *ppQuery); - return hr; + IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface; + IDirect3DQuery9Impl *object = NULL; + HRESULT hr = D3D_OK; + + TRACE("(%p) Relay\n", This); + + if (!ppQuery) + return IWineD3DDevice_CreateQuery(This->WineD3DDevice, Type, NULL, NULL); + + /* Allocate the storage for the device */ + object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DQuery9Impl)); + if (NULL == object) { + FIXME("Allocation of memory failed\n"); + *ppQuery = NULL; + return D3DERR_OUTOFVIDEOMEMORY; + } + + object->lpVtbl = &Direct3DQuery9_Vtbl; + object->ref = 1; + hr = IWineD3DDevice_CreateQuery(This->WineD3DDevice, Type, &object->wineD3DQuery, (IUnknown *)object); + + if (FAILED(hr)) { + /* free up object */ + FIXME("(%p) call to IWineD3DDevice_CreateQuery failed\n", This); + HeapFree(GetProcessHeap(), 0, object); + *ppQuery = NULL; + } else { + *ppQuery = (LPDIRECT3DQUERY9) object; + } + TRACE("(%p) : returning %lx\n", This, hr); + return hr; }