static HRESULT WINAPI d3d9_query_GetData(IDirect3DQuery9 *iface, void *data, DWORD size, DWORD flags) { struct d3d9_query *query = impl_from_IDirect3DQuery9(iface); enum wined3d_query_type type; HRESULT hr; TRACE("iface %p, data %p, size %u, flags %#x.\n", iface, data, size, flags); wined3d_mutex_lock(); type = wined3d_query_get_type(query->wined3d_query); if (type == WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT && data) { struct wined3d_query_data_timestamp_disjoint data_disjoint; if (size > sizeof(data_disjoint.disjoint)) size = sizeof(data_disjoint.disjoint); hr = wined3d_query_get_data(query->wined3d_query, &data_disjoint, sizeof(data_disjoint), flags); memcpy(data, &data_disjoint.disjoint, size); } else { hr = wined3d_query_get_data(query->wined3d_query, data, size, flags); } wined3d_mutex_unlock(); return hr; }
static D3DQUERYTYPE WINAPI IDirect3DQuery9Impl_GetType(IDirect3DQuery9 *iface) { IDirect3DQuery9Impl *This = impl_from_IDirect3DQuery9(iface); D3DQUERYTYPE type; TRACE("iface %p.\n", iface); wined3d_mutex_lock(); type = wined3d_query_get_type(This->wineD3DQuery); wined3d_mutex_unlock(); return type; }
static D3DQUERYTYPE WINAPI d3d9_query_GetType(IDirect3DQuery9 *iface) { struct d3d9_query *query = impl_from_IDirect3DQuery9(iface); D3DQUERYTYPE type; TRACE("iface %p.\n", iface); wined3d_mutex_lock(); type = wined3d_query_get_type(query->wined3d_query); wined3d_mutex_unlock(); return type; }
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_TIMESTAMP_DISJOINT) ret = sizeof(BOOL); else ret = wined3d_query_get_data_size(query->wined3d_query); wined3d_mutex_unlock(); return ret; }