Paul Gofman : d3dx9: Do not set active pass if BeginPass() failed.
Alexandre Julliard
julliard at winehq.org
Mon May 8 17:21:22 CDT 2017
Module: wine
Branch: master
Commit: a79da9689d95e59e36ea32ca118331931e6799b4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a79da9689d95e59e36ea32ca118331931e6799b4
Author: Paul Gofman <gofmanp at gmail.com>
Date: Fri May 5 14:34:30 2017 +0300
d3dx9: Do not set active pass if BeginPass() failed.
Signed-off-by: Paul Gofman <gofmanp at gmail.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/d3dx9_36/effect.c | 8 ++++++--
dlls/d3dx9_36/tests/effect.c | 1 +
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c
index 864c390..3a6803c 100644
--- a/dlls/d3dx9_36/effect.c
+++ b/dlls/d3dx9_36/effect.c
@@ -4071,10 +4071,14 @@ static HRESULT WINAPI ID3DXEffectImpl_BeginPass(ID3DXEffect *iface, UINT pass)
if (technique && pass < technique->pass_count && !effect->active_pass)
{
- effect->active_pass = &technique->passes[pass];
+ HRESULT hr;
+
memset(effect->current_light, 0, sizeof(effect->current_light));
memset(&effect->current_material, 0, sizeof(effect->current_material));
- return d3dx9_apply_pass_states(effect, effect->active_pass, TRUE);
+
+ if (SUCCEEDED(hr = d3dx9_apply_pass_states(effect, &technique->passes[pass], TRUE)))
+ effect->active_pass = &technique->passes[pass];
+ return hr;
}
WARN("Invalid argument supplied.\n");
diff --git a/dlls/d3dx9_36/tests/effect.c b/dlls/d3dx9_36/tests/effect.c
index f3bc9e3..c0ff4bd 100644
--- a/dlls/d3dx9_36/tests/effect.c
+++ b/dlls/d3dx9_36/tests/effect.c
@@ -6019,6 +6019,7 @@ static void test_effect_shared_parameters(IDirect3DDevice9 *device)
"Unexpected vector %g, %g, %g, %g.\n", fvect.x, fvect.y, fvect.z, fvect.w);
hr = effect3->lpVtbl->EndPass(effect3);
+ todo_wine
ok(hr == D3D_OK, "Got result %#x.\n", hr);
hr = effect3->lpVtbl->End(effect3);
More information about the wine-cvs
mailing list