wined3d: Queries don't need parents.
authorHenri Verbeet <hverbeet@codeweavers.com>
Tue, 31 Aug 2010 16:41:38 +0000 (18:41 +0200)
committerAlexandre Julliard <julliard@winehq.org>
Wed, 1 Sep 2010 10:40:08 +0000 (12:40 +0200)
dlls/d3d9/query.c
dlls/wined3d/device.c
dlls/wined3d/query.c
dlls/wined3d/wined3d_private.h
include/wine/wined3d.idl

index a38dc9d15fb024a1b1d296e8a657b34e6aef6b25..4a5869696fb56fa2d68f3da0ac78117757c794c1 100644 (file)
@@ -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))
     {
index caf332fdb5f7cf6595743fbfb3ce46bd78cf4f69..ce1910fccbabc1fc2a4e7637aab67da23a5d234d 100644 (file)
@@ -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);
index b3c77eae69237436169a840449effa708a837418..b3c7a40e357e0c96ab5ad49e8fc462eccdfa4569 100644 (file)
@@ -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;
index 7c817547bad293d64d86717d485635cb4e451cee..a153f3c30ebe6424b811a9ad8041ad707312e70a 100644 (file)
@@ -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 */
 
index f10c35f9989b85d332e86561faa7909db0f6787f..001bc8af82ae2f4aa45a9ffc824da5876fe570a8 100644 (file)
@@ -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,