* Sync to trunk HEAD (r53318).
[reactos.git] / dll / directx / wine / d3d9 / query.c
index 4a58696..4252332 100644 (file)
 
 WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
 
-/* IDirect3DQuery9 IUnknown parts follow: */
-static HRESULT WINAPI IDirect3DQuery9Impl_QueryInterface(LPDIRECT3DQUERY9 iface, REFIID riid, LPVOID* ppobj) {
-    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+static inline IDirect3DQuery9Impl *impl_from_IDirect3DQuery9(IDirect3DQuery9 *iface)
+{
+    return CONTAINING_RECORD(iface, IDirect3DQuery9Impl, IDirect3DQuery9_iface);
+}
+
+static HRESULT WINAPI IDirect3DQuery9Impl_QueryInterface(IDirect3DQuery9 *iface, REFIID riid,
+        void **ppobj)
+{
+    IDirect3DQuery9Impl *This = impl_from_IDirect3DQuery9(iface);
 
     TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), ppobj);
 
@@ -43,8 +49,9 @@ static HRESULT WINAPI IDirect3DQuery9Impl_QueryInterface(LPDIRECT3DQUERY9 iface,
     return E_NOINTERFACE;
 }
 
-static ULONG WINAPI IDirect3DQuery9Impl_AddRef(LPDIRECT3DQUERY9 iface) {
-    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+static ULONG WINAPI IDirect3DQuery9Impl_AddRef(IDirect3DQuery9 *iface)
+{
+    IDirect3DQuery9Impl *This = impl_from_IDirect3DQuery9(iface);
     ULONG ref = InterlockedIncrement(&This->ref);
 
     TRACE("%p increasing refcount to %u.\n", iface, ref);
@@ -52,15 +59,16 @@ static ULONG WINAPI IDirect3DQuery9Impl_AddRef(LPDIRECT3DQUERY9 iface) {
     return ref;
 }
 
-static ULONG WINAPI IDirect3DQuery9Impl_Release(LPDIRECT3DQUERY9 iface) {
-    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+static ULONG WINAPI IDirect3DQuery9Impl_Release(IDirect3DQuery9 *iface)
+{
+    IDirect3DQuery9Impl *This = impl_from_IDirect3DQuery9(iface);
     ULONG ref = InterlockedDecrement(&This->ref);
 
     TRACE("%p decreasing refcount to %u.\n", iface, ref);
 
     if (ref == 0) {
         wined3d_mutex_lock();
-        IWineD3DQuery_Release(This->wineD3DQuery);
+        wined3d_query_decref(This->wineD3DQuery);
         wined3d_mutex_unlock();
 
         IDirect3DDevice9Ex_Release(This->parentDevice);
@@ -69,10 +77,10 @@ static ULONG WINAPI IDirect3DQuery9Impl_Release(LPDIRECT3DQUERY9 iface) {
     return ref;
 }
 
-/* IDirect3DQuery9 Interface follow: */
-static HRESULT WINAPI IDirect3DQuery9Impl_GetDevice(IDirect3DQuery9 *iface, IDirect3DDevice9 **device)
+static HRESULT WINAPI IDirect3DQuery9Impl_GetDevice(IDirect3DQuery9 *iface,
+        IDirect3DDevice9 **device)
 {
-    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+    IDirect3DQuery9Impl *This = impl_from_IDirect3DQuery9(iface);
 
     TRACE("iface %p, device %p.\n", iface, device);
 
@@ -84,54 +92,59 @@ static HRESULT WINAPI IDirect3DQuery9Impl_GetDevice(IDirect3DQuery9 *iface, IDir
     return D3D_OK;
 }
 
-static D3DQUERYTYPE WINAPI IDirect3DQuery9Impl_GetType(LPDIRECT3DQUERY9 iface) {
-    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
-    HRESULT hr;
+static D3DQUERYTYPE WINAPI IDirect3DQuery9Impl_GetType(IDirect3DQuery9 *iface)
+{
+    IDirect3DQuery9Impl *This = impl_from_IDirect3DQuery9(iface);
+    D3DQUERYTYPE type;
 
     TRACE("iface %p.\n", iface);
 
     wined3d_mutex_lock();
-    hr = IWineD3DQuery_GetType(This->wineD3DQuery);
+    type = wined3d_query_get_type(This->wineD3DQuery);
     wined3d_mutex_unlock();
 
-    return hr;
+    return type;
 }
 
-static DWORD WINAPI IDirect3DQuery9Impl_GetDataSize(LPDIRECT3DQUERY9 iface) {
-    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+static DWORD WINAPI IDirect3DQuery9Impl_GetDataSize(IDirect3DQuery9 *iface)
+{
+    IDirect3DQuery9Impl *This = impl_from_IDirect3DQuery9(iface);
     DWORD ret;
 
     TRACE("iface %p.\n", iface);
 
     wined3d_mutex_lock();
-    ret = IWineD3DQuery_GetDataSize(This->wineD3DQuery);
+    ret = wined3d_query_get_data_size(This->wineD3DQuery);
     wined3d_mutex_unlock();
 
     return ret;
 }
 
-static HRESULT WINAPI IDirect3DQuery9Impl_Issue(LPDIRECT3DQUERY9 iface, DWORD dwIssueFlags) {
-    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+static HRESULT WINAPI IDirect3DQuery9Impl_Issue(IDirect3DQuery9 *iface, DWORD dwIssueFlags)
+{
+    IDirect3DQuery9Impl *This = impl_from_IDirect3DQuery9(iface);
     HRESULT hr;
 
     TRACE("iface %p, flags %#x.\n", iface, dwIssueFlags);
 
     wined3d_mutex_lock();
-    hr = IWineD3DQuery_Issue(This->wineD3DQuery, dwIssueFlags);
+    hr = wined3d_query_issue(This->wineD3DQuery, dwIssueFlags);
     wined3d_mutex_unlock();
 
     return hr;
 }
 
-static HRESULT WINAPI IDirect3DQuery9Impl_GetData(LPDIRECT3DQUERY9 iface, void* pData, DWORD dwSize, DWORD dwGetDataFlags) {
-    IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
+static HRESULT WINAPI IDirect3DQuery9Impl_GetData(IDirect3DQuery9 *iface, void *pData,
+        DWORD dwSize, DWORD dwGetDataFlags)
+{
+    IDirect3DQuery9Impl *This = impl_from_IDirect3DQuery9(iface);
     HRESULT hr;
 
     TRACE("iface %p, data %p, size %u, flags %#x.\n",
             iface, pData, dwSize, dwGetDataFlags);
 
     wined3d_mutex_lock();
-    hr = IWineD3DQuery_GetData(This->wineD3DQuery, pData, dwSize, dwGetDataFlags);
+    hr = wined3d_query_get_data(This->wineD3DQuery, pData, dwSize, dwGetDataFlags);
     wined3d_mutex_unlock();
 
     return hr;
@@ -154,11 +167,11 @@ HRESULT query_init(IDirect3DQuery9Impl *query, IDirect3DDevice9Impl *device, D3D
 {
     HRESULT hr;
 
-    query->lpVtbl = &Direct3DQuery9_Vtbl;
+    query->IDirect3DQuery9_iface.lpVtbl = &Direct3DQuery9_Vtbl;
     query->ref = 1;
 
     wined3d_mutex_lock();
-    hr = IWineD3DDevice_CreateQuery(device->WineD3DDevice, type, &query->wineD3DQuery);
+    hr = wined3d_query_create(device->wined3d_device, type, &query->wineD3DQuery);
     wined3d_mutex_unlock();
     if (FAILED(hr))
     {
@@ -166,7 +179,7 @@ HRESULT query_init(IDirect3DQuery9Impl *query, IDirect3DDevice9Impl *device, D3D
         return hr;
     }
 
-    query->parentDevice = (IDirect3DDevice9Ex *)device;
+    query->parentDevice = &device->IDirect3DDevice9Ex_iface;
     IDirect3DDevice9Ex_AddRef(query->parentDevice);
 
     return D3D_OK;