diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index c399bad995a4096210c2a3f65696822fbbde31db..9b7148624dc9a0617e7509962a2f98ec20a6c440 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -491,6 +491,15 @@ void stateblock_unbind_resources(struct wined3d_stateblock *stateblock) } } + for (i = 0; i < MAX_STREAM_OUT; ++i) + { + if ((buffer = state->stream_output[i].buffer)) + { + state->stream_output[i].buffer = NULL; + wined3d_buffer_decref(buffer); + } + } + for (i = 0; i < MAX_STREAMS; ++i) { if ((buffer = state->streams[i].buffer)) @@ -512,6 +521,12 @@ void stateblock_unbind_resources(struct wined3d_stateblock *stateblock) wined3d_shader_decref(shader); } + if ((shader = state->geometry_shader)) + { + state->geometry_shader = NULL; + wined3d_shader_decref(shader); + } + if ((shader = state->pixel_shader)) { state->pixel_shader = NULL;