From 7c675b522a6c52a9d8e587e07a6a28bf69522645 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Tue, 31 Aug 2010 18:41:38 +0200 Subject: [PATCH] wined3d: Queries don't need parents. --- dlls/d3d9/query.c | 2 +- dlls/wined3d/device.c | 6 ++--- dlls/wined3d/query.c | 49 +++++++++------------------------- dlls/wined3d/wined3d_private.h | 4 +-- include/wine/wined3d.idl | 5 ++-- 5 files changed, 19 insertions(+), 47 deletions(-) diff --git a/dlls/d3d9/query.c b/dlls/d3d9/query.c index a38dc9d15fb..4a5869696fb 100644 --- a/dlls/d3d9/query.c +++ b/dlls/d3d9/query.c @@ -158,7 +158,7 @@ HRESULT query_init(IDirect3DQuery9Impl *query, IDirect3DDevice9Impl *device, D3D query->ref = 1; wined3d_mutex_lock(); - hr = IWineD3DDevice_CreateQuery(device->WineD3DDevice, type, &query->wineD3DQuery, (IUnknown *)query); + hr = IWineD3DDevice_CreateQuery(device->WineD3DDevice, type, &query->wineD3DQuery); wined3d_mutex_unlock(); if (FAILED(hr)) { diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index caf332fdb5f..ce1910fccba 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1230,13 +1230,13 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateCubeTexture(IWineD3DDevice *iface } static HRESULT WINAPI IWineD3DDeviceImpl_CreateQuery(IWineD3DDevice *iface, - WINED3DQUERYTYPE type, IWineD3DQuery **query, IUnknown *parent) + WINED3DQUERYTYPE type, IWineD3DQuery **query) { IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; IWineD3DQueryImpl *object; HRESULT hr; - TRACE("iface %p, type %#x, query %p, parent %p.\n", iface, type, query, parent); + TRACE("iface %p, type %#x, query %p.\n", iface, type, query); object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object)); if (!object) @@ -1245,7 +1245,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateQuery(IWineD3DDevice *iface, return E_OUTOFMEMORY; } - hr = query_init(object, This, type, parent); + hr = query_init(object, This, type); if (FAILED(hr)) { WARN("Failed to initialize query, hr %#x.\n", hr); diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c index b3c77eae692..b3c7a40e357 100644 --- a/dlls/wined3d/query.c +++ b/dlls/wined3d/query.c @@ -230,27 +230,21 @@ void wined3d_event_query_issue(struct wined3d_event_query *query, IWineD3DDevice context_release(context); } -/* - * Occlusion Queries: - * http://www.gris.uni-tuebingen.de/~bartz/Publications/paper/hww98.pdf - * http://oss.sgi.com/projects/ogl-sample/registry/ARB/occlusion_query.txt - */ - -/* ******************************************* - IWineD3DQuery IUnknown parts follow - ******************************************* */ -static HRESULT WINAPI IWineD3DQueryImpl_QueryInterface(IWineD3DQuery *iface, REFIID riid, LPVOID *ppobj) +static HRESULT WINAPI IWineD3DQueryImpl_QueryInterface(IWineD3DQuery *iface, REFIID riid, void **object) { - IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface; - TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj); - if (IsEqualGUID(riid, &IID_IUnknown) - || IsEqualGUID(riid, &IID_IWineD3DBase) - || IsEqualGUID(riid, &IID_IWineD3DQuery)) { + TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object); + + if (IsEqualGUID(riid, &IID_IWineD3DQuery) + || IsEqualGUID(riid, &IID_IUnknown)) + { IUnknown_AddRef(iface); - *ppobj = This; + *object = iface; return S_OK; } - *ppobj = NULL; + + WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid)); + + *object = NULL; return E_NOINTERFACE; } @@ -288,21 +282,6 @@ static ULONG WINAPI IWineD3DQueryImpl_Release(IWineD3DQuery *iface) { return ref; } -/* ******************************************* - IWineD3DQuery IWineD3DQuery parts follow - ******************************************* */ -static HRESULT WINAPI IWineD3DQueryImpl_GetParent(IWineD3DQuery *iface, IUnknown **parent) -{ - TRACE("iface %p, parent %p.\n", iface, parent); - - *parent = (IUnknown *)parent; - IUnknown_AddRef(*parent); - - TRACE("Returning %p.\n", *parent); - - return WINED3D_OK; -} - static HRESULT WINAPI IWineD3DOcclusionQueryImpl_GetData(IWineD3DQuery* iface, void* pData, DWORD dwSize, DWORD dwGetDataFlags) { IWineD3DQueryImpl *This = (IWineD3DQueryImpl *) iface; struct wined3d_occlusion_query *query = This->extendedData; @@ -554,7 +533,6 @@ static const IWineD3DQueryVtbl IWineD3DEventQuery_Vtbl = IWineD3DQueryImpl_AddRef, IWineD3DQueryImpl_Release, /*** IWineD3Dquery methods ***/ - IWineD3DQueryImpl_GetParent, IWineD3DEventQueryImpl_GetData, IWineD3DEventQueryImpl_GetDataSize, IWineD3DQueryImpl_GetType, @@ -568,15 +546,13 @@ static const IWineD3DQueryVtbl IWineD3DOcclusionQuery_Vtbl = IWineD3DQueryImpl_AddRef, IWineD3DQueryImpl_Release, /*** IWineD3Dquery methods ***/ - IWineD3DQueryImpl_GetParent, IWineD3DOcclusionQueryImpl_GetData, IWineD3DOcclusionQueryImpl_GetDataSize, IWineD3DQueryImpl_GetType, IWineD3DOcclusionQueryImpl_Issue }; -HRESULT query_init(IWineD3DQueryImpl *query, IWineD3DDeviceImpl *device, - WINED3DQUERYTYPE type, IUnknown *parent) +HRESULT query_init(IWineD3DQueryImpl *query, IWineD3DDeviceImpl *device, WINED3DQUERYTYPE type) { const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; @@ -638,7 +614,6 @@ HRESULT query_init(IWineD3DQueryImpl *query, IWineD3DDeviceImpl *device, query->type = type; query->state = QUERY_CREATED; query->device = device; - query->parent = parent; query->ref = 1; return WINED3D_OK; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 7c817547bad..a153f3c30eb 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -2442,7 +2442,6 @@ typedef struct IWineD3DQueryImpl const IWineD3DQueryVtbl *lpVtbl; LONG ref; /* Note: Ref counting not required */ - IUnknown *parent; IWineD3DDeviceImpl *device; /* IWineD3DQuery fields */ @@ -2452,8 +2451,7 @@ typedef struct IWineD3DQueryImpl void *extendedData; } IWineD3DQueryImpl; -HRESULT query_init(IWineD3DQueryImpl *query, IWineD3DDeviceImpl *device, - WINED3DQUERYTYPE type, IUnknown *parent) DECLSPEC_HIDDEN; +HRESULT query_init(IWineD3DQueryImpl *query, IWineD3DDeviceImpl *device, WINED3DQUERYTYPE type) DECLSPEC_HIDDEN; /* IWineD3DBuffer */ diff --git a/include/wine/wined3d.idl b/include/wine/wined3d.idl index f10c35f9989..001bc8af82a 100644 --- a/include/wine/wined3d.idl +++ b/include/wine/wined3d.idl @@ -2658,7 +2658,7 @@ interface IWineD3DStateBlock : IUnknown local, uuid(905ddbac-6f30-11d9-c687-00046142c14f) ] -interface IWineD3DQuery : IWineD3DBase +interface IWineD3DQuery : IUnknown { HRESULT GetData( [out] void *data, @@ -2888,8 +2888,7 @@ interface IWineD3DDevice : IUnknown ); HRESULT CreateQuery( [in] WINED3DQUERYTYPE type, - [out] IWineD3DQuery **query, - [in] IUnknown *parent + [out] IWineD3DQuery **query ); HRESULT CreateSwapChain( [in] WINED3DPRESENT_PARAMETERS *present_parameters,