wined3d: Queries don't need parents.

This commit is contained in:
Henri Verbeet 2010-08-31 18:41:38 +02:00 committed by Alexandre Julliard
parent 2ef400901d
commit 7c675b522a
5 changed files with 19 additions and 47 deletions

View File

@ -158,7 +158,7 @@ HRESULT query_init(IDirect3DQuery9Impl *query, IDirect3DDevice9Impl *device, D3D
query->ref = 1; query->ref = 1;
wined3d_mutex_lock(); wined3d_mutex_lock();
hr = IWineD3DDevice_CreateQuery(device->WineD3DDevice, type, &query->wineD3DQuery, (IUnknown *)query); hr = IWineD3DDevice_CreateQuery(device->WineD3DDevice, type, &query->wineD3DQuery);
wined3d_mutex_unlock(); wined3d_mutex_unlock();
if (FAILED(hr)) if (FAILED(hr))
{ {

View File

@ -1230,13 +1230,13 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateCubeTexture(IWineD3DDevice *iface
} }
static HRESULT WINAPI IWineD3DDeviceImpl_CreateQuery(IWineD3DDevice *iface, static HRESULT WINAPI IWineD3DDeviceImpl_CreateQuery(IWineD3DDevice *iface,
WINED3DQUERYTYPE type, IWineD3DQuery **query, IUnknown *parent) WINED3DQUERYTYPE type, IWineD3DQuery **query)
{ {
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
IWineD3DQueryImpl *object; IWineD3DQueryImpl *object;
HRESULT hr; 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)); object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
if (!object) if (!object)
@ -1245,7 +1245,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateQuery(IWineD3DDevice *iface,
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
} }
hr = query_init(object, This, type, parent); hr = query_init(object, This, type);
if (FAILED(hr)) if (FAILED(hr))
{ {
WARN("Failed to initialize query, hr %#x.\n", hr); WARN("Failed to initialize query, hr %#x.\n", hr);

View File

@ -230,27 +230,21 @@ void wined3d_event_query_issue(struct wined3d_event_query *query, IWineD3DDevice
context_release(context); context_release(context);
} }
/* static HRESULT WINAPI IWineD3DQueryImpl_QueryInterface(IWineD3DQuery *iface, REFIID riid, void **object)
* 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)
{ {
IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface; TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
if (IsEqualGUID(riid, &IID_IUnknown) if (IsEqualGUID(riid, &IID_IWineD3DQuery)
|| IsEqualGUID(riid, &IID_IWineD3DBase) || IsEqualGUID(riid, &IID_IUnknown))
|| IsEqualGUID(riid, &IID_IWineD3DQuery)) { {
IUnknown_AddRef(iface); IUnknown_AddRef(iface);
*ppobj = This; *object = iface;
return S_OK; return S_OK;
} }
*ppobj = NULL;
WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
*object = NULL;
return E_NOINTERFACE; return E_NOINTERFACE;
} }
@ -288,21 +282,6 @@ static ULONG WINAPI IWineD3DQueryImpl_Release(IWineD3DQuery *iface) {
return ref; 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) { static HRESULT WINAPI IWineD3DOcclusionQueryImpl_GetData(IWineD3DQuery* iface, void* pData, DWORD dwSize, DWORD dwGetDataFlags) {
IWineD3DQueryImpl *This = (IWineD3DQueryImpl *) iface; IWineD3DQueryImpl *This = (IWineD3DQueryImpl *) iface;
struct wined3d_occlusion_query *query = This->extendedData; struct wined3d_occlusion_query *query = This->extendedData;
@ -554,7 +533,6 @@ static const IWineD3DQueryVtbl IWineD3DEventQuery_Vtbl =
IWineD3DQueryImpl_AddRef, IWineD3DQueryImpl_AddRef,
IWineD3DQueryImpl_Release, IWineD3DQueryImpl_Release,
/*** IWineD3Dquery methods ***/ /*** IWineD3Dquery methods ***/
IWineD3DQueryImpl_GetParent,
IWineD3DEventQueryImpl_GetData, IWineD3DEventQueryImpl_GetData,
IWineD3DEventQueryImpl_GetDataSize, IWineD3DEventQueryImpl_GetDataSize,
IWineD3DQueryImpl_GetType, IWineD3DQueryImpl_GetType,
@ -568,15 +546,13 @@ static const IWineD3DQueryVtbl IWineD3DOcclusionQuery_Vtbl =
IWineD3DQueryImpl_AddRef, IWineD3DQueryImpl_AddRef,
IWineD3DQueryImpl_Release, IWineD3DQueryImpl_Release,
/*** IWineD3Dquery methods ***/ /*** IWineD3Dquery methods ***/
IWineD3DQueryImpl_GetParent,
IWineD3DOcclusionQueryImpl_GetData, IWineD3DOcclusionQueryImpl_GetData,
IWineD3DOcclusionQueryImpl_GetDataSize, IWineD3DOcclusionQueryImpl_GetDataSize,
IWineD3DQueryImpl_GetType, IWineD3DQueryImpl_GetType,
IWineD3DOcclusionQueryImpl_Issue IWineD3DOcclusionQueryImpl_Issue
}; };
HRESULT query_init(IWineD3DQueryImpl *query, IWineD3DDeviceImpl *device, HRESULT query_init(IWineD3DQueryImpl *query, IWineD3DDeviceImpl *device, WINED3DQUERYTYPE type)
WINED3DQUERYTYPE type, IUnknown *parent)
{ {
const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; 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->type = type;
query->state = QUERY_CREATED; query->state = QUERY_CREATED;
query->device = device; query->device = device;
query->parent = parent;
query->ref = 1; query->ref = 1;
return WINED3D_OK; return WINED3D_OK;

View File

@ -2442,7 +2442,6 @@ typedef struct IWineD3DQueryImpl
const IWineD3DQueryVtbl *lpVtbl; const IWineD3DQueryVtbl *lpVtbl;
LONG ref; /* Note: Ref counting not required */ LONG ref; /* Note: Ref counting not required */
IUnknown *parent;
IWineD3DDeviceImpl *device; IWineD3DDeviceImpl *device;
/* IWineD3DQuery fields */ /* IWineD3DQuery fields */
@ -2452,8 +2451,7 @@ typedef struct IWineD3DQueryImpl
void *extendedData; void *extendedData;
} IWineD3DQueryImpl; } IWineD3DQueryImpl;
HRESULT query_init(IWineD3DQueryImpl *query, IWineD3DDeviceImpl *device, HRESULT query_init(IWineD3DQueryImpl *query, IWineD3DDeviceImpl *device, WINED3DQUERYTYPE type) DECLSPEC_HIDDEN;
WINED3DQUERYTYPE type, IUnknown *parent) DECLSPEC_HIDDEN;
/* IWineD3DBuffer */ /* IWineD3DBuffer */

View File

@ -2658,7 +2658,7 @@ interface IWineD3DStateBlock : IUnknown
local, local,
uuid(905ddbac-6f30-11d9-c687-00046142c14f) uuid(905ddbac-6f30-11d9-c687-00046142c14f)
] ]
interface IWineD3DQuery : IWineD3DBase interface IWineD3DQuery : IUnknown
{ {
HRESULT GetData( HRESULT GetData(
[out] void *data, [out] void *data,
@ -2888,8 +2888,7 @@ interface IWineD3DDevice : IUnknown
); );
HRESULT CreateQuery( HRESULT CreateQuery(
[in] WINED3DQUERYTYPE type, [in] WINED3DQUERYTYPE type,
[out] IWineD3DQuery **query, [out] IWineD3DQuery **query
[in] IUnknown *parent
); );
HRESULT CreateSwapChain( HRESULT CreateSwapChain(
[in] WINED3DPRESENT_PARAMETERS *present_parameters, [in] WINED3DPRESENT_PARAMETERS *present_parameters,