=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: d3d9: Store query data size in " d3d9_query".
Alexandre Julliard
julliard at winehq.org
Fri Feb 3 13:31:34 CST 2017
Module: wine
Branch: master
Commit: 78a945e7bf9216610ec60b381e8ba91c08d56e20
URL: http://source.winehq.org/git/wine.git/?a=commit;h=78a945e7bf9216610ec60b381e8ba91c08d56e20
Author: Józef Kucia <jkucia at codeweavers.com>
Date: Fri Feb 3 14:08:48 2017 +0100
d3d9: Store query data size in "d3d9_query".
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/d3d9/d3d9_private.h | 1 +
dlls/d3d9/query.c | 30 ++++++++++++------------------
2 files changed, 13 insertions(+), 18 deletions(-)
diff --git a/dlls/d3d9/d3d9_private.h b/dlls/d3d9/d3d9_private.h
index fef0133..c8558e7 100644
--- a/dlls/d3d9/d3d9_private.h
+++ b/dlls/d3d9/d3d9_private.h
@@ -341,6 +341,7 @@ struct d3d9_query
LONG refcount;
struct wined3d_query *wined3d_query;
IDirect3DDevice9Ex *parent_device;
+ DWORD data_size;
};
HRESULT query_init(struct d3d9_query *query, struct d3d9_device *device, D3DQUERYTYPE type) DECLSPEC_HIDDEN;
diff --git a/dlls/d3d9/query.c b/dlls/d3d9/query.c
index e4f84c3..9179260 100644
--- a/dlls/d3d9/query.c
+++ b/dlls/d3d9/query.c
@@ -108,22 +108,10 @@ static D3DQUERYTYPE WINAPI d3d9_query_GetType(IDirect3DQuery9 *iface)
static DWORD WINAPI d3d9_query_GetDataSize(IDirect3DQuery9 *iface)
{
struct d3d9_query *query = impl_from_IDirect3DQuery9(iface);
- enum wined3d_query_type type;
- DWORD ret;
TRACE("iface %p.\n", iface);
- wined3d_mutex_lock();
- type = wined3d_query_get_type(query->wined3d_query);
- if (type == WINED3D_QUERY_TYPE_OCCLUSION)
- ret = sizeof(DWORD);
- else if (type == WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT)
- ret = sizeof(BOOL);
- else
- ret = wined3d_query_get_data_size(query->wined3d_query);
- wined3d_mutex_unlock();
-
- return ret;
+ return query->data_size;
}
static HRESULT WINAPI d3d9_query_Issue(IDirect3DQuery9 *iface, DWORD flags)
@@ -172,9 +160,8 @@ static HRESULT WINAPI d3d9_query_GetData(IDirect3DQuery9 *iface, void *data, DWO
{
if (data)
{
- DWORD data_size = d3d9_query_GetDataSize(iface);
memset(data, 0, size);
- memset(data, 0xdd, min(size, data_size));
+ memset(data, 0xdd, min(size, query->data_size));
}
return S_OK;
}
@@ -202,14 +189,21 @@ HRESULT query_init(struct d3d9_query *query, struct d3d9_device *device, D3DQUER
query->refcount = 1;
wined3d_mutex_lock();
- hr = wined3d_query_create(device->wined3d_device, type, query, &query->wined3d_query);
- wined3d_mutex_unlock();
- if (FAILED(hr))
+ if (FAILED(hr = wined3d_query_create(device->wined3d_device, type, query, &query->wined3d_query)))
{
+ wined3d_mutex_unlock();
WARN("Failed to create wined3d query, hr %#x.\n", hr);
return hr;
}
+ if (type == D3DQUERYTYPE_OCCLUSION)
+ query->data_size = sizeof(DWORD);
+ else if (type == D3DQUERYTYPE_TIMESTAMPDISJOINT)
+ query->data_size = sizeof(BOOL);
+ else
+ query->data_size = wined3d_query_get_data_size(query->wined3d_query);
+ wined3d_mutex_unlock();
+
query->parent_device = &device->IDirect3DDevice9Ex_iface;
IDirect3DDevice9Ex_AddRef(query->parent_device);
More information about the wine-cvs
mailing list