Commit f79bbc76 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

wined3d: wined3d_device_set_transform() never fails.

parent b6b9c156
......@@ -1261,16 +1261,15 @@ static HRESULT WINAPI d3d8_device_SetTransform(IDirect3DDevice8 *iface,
D3DTRANSFORMSTATETYPE state, const D3DMATRIX *matrix)
{
struct d3d8_device *device = impl_from_IDirect3DDevice8(iface);
HRESULT hr;
TRACE("iface %p, state %#x, matrix %p.\n", iface, state, matrix);
/* Note: D3DMATRIX is compatible with struct wined3d_matrix. */
wined3d_mutex_lock();
hr = wined3d_device_set_transform(device->wined3d_device, state, (const struct wined3d_matrix *)matrix);
wined3d_device_set_transform(device->wined3d_device, state, (const struct wined3d_matrix *)matrix);
wined3d_mutex_unlock();
return hr;
return D3D_OK;
}
static HRESULT WINAPI d3d8_device_GetTransform(IDirect3DDevice8 *iface,
......
......@@ -1327,16 +1327,15 @@ static HRESULT WINAPI d3d9_device_SetTransform(IDirect3DDevice9Ex *iface,
D3DTRANSFORMSTATETYPE state, const D3DMATRIX *matrix)
{
struct d3d9_device *device = impl_from_IDirect3DDevice9Ex(iface);
HRESULT hr;
TRACE("iface %p, state %#x, matrix %p.\n", iface, state, matrix);
/* Note: D3DMATRIX is compatible with struct wined3d_matrix. */
wined3d_mutex_lock();
hr = wined3d_device_set_transform(device->wined3d_device, state, (const struct wined3d_matrix *)matrix);
wined3d_device_set_transform(device->wined3d_device, state, (const struct wined3d_matrix *)matrix);
wined3d_mutex_unlock();
return hr;
return D3D_OK;
}
static HRESULT WINAPI d3d9_device_GetTransform(IDirect3DDevice9Ex *iface,
......
......@@ -3084,7 +3084,6 @@ static HRESULT d3d_device7_SetTransform(IDirect3DDevice7 *iface,
{
struct d3d_device *device = impl_from_IDirect3DDevice7(iface);
enum wined3d_transform_state wined3d_state;
HRESULT hr;
TRACE("iface %p, state %#x, matrix %p.\n", iface, state, matrix);
......@@ -3111,10 +3110,10 @@ static HRESULT d3d_device7_SetTransform(IDirect3DDevice7 *iface,
/* Note: D3DMATRIX is compatible with struct wined3d_matrix. */
wined3d_mutex_lock();
hr = wined3d_device_set_transform(device->wined3d_device, wined3d_state, (struct wined3d_matrix *)matrix);
wined3d_device_set_transform(device->wined3d_device, wined3d_state, (struct wined3d_matrix *)matrix);
wined3d_mutex_unlock();
return hr;
return D3D_OK;
}
static HRESULT WINAPI d3d_device7_SetTransform_FPUSetup(IDirect3DDevice7 *iface,
......@@ -3149,17 +3148,15 @@ static HRESULT WINAPI d3d_device3_SetTransform(IDirect3DDevice3 *iface,
if (state == D3DTRANSFORMSTATE_PROJECTION)
{
D3DMATRIX projection;
HRESULT hr;
wined3d_mutex_lock();
multiply_matrix(&projection, &device->legacy_clipspace, matrix);
hr = wined3d_device_set_transform(device->wined3d_device,
wined3d_device_set_transform(device->wined3d_device,
WINED3D_TS_PROJECTION, (struct wined3d_matrix *)&projection);
if (SUCCEEDED(hr))
device->legacy_projection = *matrix;
device->legacy_projection = *matrix;
wined3d_mutex_unlock();
return hr;
return D3D_OK;
}
return IDirect3DDevice7_SetTransform(&device->IDirect3DDevice7_iface, state, matrix);
......@@ -3363,18 +3360,16 @@ static HRESULT WINAPI d3d_device3_MultiplyTransform(IDirect3DDevice3 *iface,
if (state == D3DTRANSFORMSTATE_PROJECTION)
{
D3DMATRIX projection, tmp;
HRESULT hr;
wined3d_mutex_lock();
multiply_matrix(&tmp, &device->legacy_projection, matrix);
multiply_matrix(&projection, &device->legacy_clipspace, &tmp);
hr = wined3d_device_set_transform(device->wined3d_device,
wined3d_device_set_transform(device->wined3d_device,
WINED3D_TS_PROJECTION, (struct wined3d_matrix *)&projection);
if (SUCCEEDED(hr))
device->legacy_projection = tmp;
device->legacy_projection = tmp;
wined3d_mutex_unlock();
return hr;
return D3D_OK;
}
return IDirect3DDevice7_MultiplyTransform(&device->IDirect3DDevice7_iface, state, matrix);
......
......@@ -41,13 +41,11 @@ static void update_clip_space(struct d3d_device *device,
offset->x, offset->y, offset->z, 1.0f,
};
D3DMATRIX projection;
HRESULT hr;
multiply_matrix(&projection, &clip_space, &device->legacy_projection);
hr = wined3d_device_set_transform(device->wined3d_device,
wined3d_device_set_transform(device->wined3d_device,
WINED3D_TS_PROJECTION, (struct wined3d_matrix *)&projection);
if (SUCCEEDED(hr))
device->legacy_clipspace = clip_space;
device->legacy_clipspace = clip_space;
}
/*****************************************************************************
......
......@@ -1716,7 +1716,7 @@ HRESULT CDECL wined3d_device_get_stream_source_freq(const struct wined3d_device
return WINED3D_OK;
}
HRESULT CDECL wined3d_device_set_transform(struct wined3d_device *device,
void CDECL wined3d_device_set_transform(struct wined3d_device *device,
enum wined3d_transform_state d3dts, const struct wined3d_matrix *matrix)
{
TRACE("device %p, state %s, matrix %p.\n",
......@@ -1732,7 +1732,7 @@ HRESULT CDECL wined3d_device_set_transform(struct wined3d_device *device,
TRACE("Recording... not performing anything.\n");
device->updateStateBlock->changed.transform[d3dts >> 5] |= 1 << (d3dts & 0x1f);
device->updateStateBlock->state.transforms[d3dts] = *matrix;
return WINED3D_OK;
return;
}
/* If the new matrix is the same as the current one,
......@@ -1744,7 +1744,7 @@ HRESULT CDECL wined3d_device_set_transform(struct wined3d_device *device,
if (!memcmp(&device->stateBlock->state.transforms[d3dts].u.m[0][0], matrix, sizeof(*matrix)))
{
TRACE("The application is setting the same matrix over again.\n");
return WINED3D_OK;
return;
}
device->stateBlock->state.transforms[d3dts] = *matrix;
......@@ -1753,9 +1753,6 @@ HRESULT CDECL wined3d_device_set_transform(struct wined3d_device *device,
if (d3dts < WINED3D_TS_WORLD_MATRIX(device->adapter->gl_info.limits.blends))
device_invalidate_state(device, STATE_TRANSFORM(d3dts));
return WINED3D_OK;
}
HRESULT CDECL wined3d_device_get_transform(const struct wined3d_device *device,
......@@ -1790,7 +1787,9 @@ HRESULT CDECL wined3d_device_multiply_transform(struct wined3d_device *device,
multiply_matrix(&temp, mat, matrix);
/* Apply change via set transform - will reapply to eg. lights this way. */
return wined3d_device_set_transform(device, state, &temp);
wined3d_device_set_transform(device, state, &temp);
return WINED3D_OK;
}
/* Note lights are real special cases. Although the device caps state only
......
......@@ -2233,7 +2233,7 @@ HRESULT __cdecl wined3d_device_set_stream_source_freq(struct wined3d_device *dev
HRESULT __cdecl wined3d_device_set_texture(struct wined3d_device *device, UINT stage, struct wined3d_texture *texture);
HRESULT __cdecl wined3d_device_set_texture_stage_state(struct wined3d_device *device,
UINT stage, enum wined3d_texture_stage_state state, DWORD value);
HRESULT __cdecl wined3d_device_set_transform(struct wined3d_device *device,
void __cdecl wined3d_device_set_transform(struct wined3d_device *device,
enum wined3d_transform_state state, const struct wined3d_matrix *matrix);
HRESULT __cdecl wined3d_device_set_vertex_declaration(struct wined3d_device *device,
struct wined3d_vertex_declaration *declaration);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment