Stefan Dösinger : wined3d: Move destroying the glsl vshader into a separate function.
Alexandre Julliard
julliard at winehq.org
Wed Nov 21 07:47:41 CST 2007
Module: wine
Branch: master
Commit: af4edef5e1ef166f62a3f5115b1b748761065ac5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=af4edef5e1ef166f62a3f5115b1b748761065ac5
Author: Stefan Dösinger <stefan at codeweavers.com>
Date: Tue Nov 20 17:03:21 2007 +0100
wined3d: Move destroying the glsl vshader into a separate function.
---
dlls/wined3d/vertexshader.c | 29 ++++++++++++++++-------------
1 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c
index ab03e25..934fed0 100644
--- a/dlls/wined3d/vertexshader.c
+++ b/dlls/wined3d/vertexshader.c
@@ -445,6 +445,21 @@ static ULONG WINAPI IWineD3DVertexShaderImpl_AddRef(IWineD3DVertexShader *iface
return IWineD3DBaseShaderImpl_AddRef((IWineD3DBaseShader *) iface);
}
+static void destroy_glsl_vshader(IWineD3DVertexShaderImpl *This) {
+ struct list *linked_programs = &This->baseShader.linked_programs;
+
+ TRACE("Deleting linked programs\n");
+ if (linked_programs->next) {
+ struct glsl_shader_prog_link *entry, *entry2;
+ LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, linked_programs, struct glsl_shader_prog_link, vshader_entry) {
+ delete_glsl_program_entry(This->baseShader.device, entry);
+ }
+ }
+
+ TRACE("Deleting shader object %u\n", This->baseShader.prgId);
+ GL_EXTCALL(glDeleteObjectARB(This->baseShader.prgId));
+ checkGLcall("glDeleteObjectARB");
+}
static ULONG WINAPI IWineD3DVertexShaderImpl_Release(IWineD3DVertexShader *iface) {
IWineD3DVertexShaderImpl *This = (IWineD3DVertexShaderImpl *)iface;
ULONG ref;
@@ -452,19 +467,7 @@ static ULONG WINAPI IWineD3DVertexShaderImpl_Release(IWineD3DVertexShader *iface
if (ref == 0) {
if (This->baseShader.shader_mode == SHADER_GLSL && This->baseShader.prgId != 0) {
- struct list *linked_programs = &This->baseShader.linked_programs;
-
- TRACE("Deleting linked programs\n");
- if (linked_programs->next) {
- struct glsl_shader_prog_link *entry, *entry2;
- LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, linked_programs, struct glsl_shader_prog_link, vshader_entry) {
- delete_glsl_program_entry(This->baseShader.device, entry);
- }
- }
-
- TRACE("Deleting shader object %u\n", This->baseShader.prgId);
- GL_EXTCALL(glDeleteObjectARB(This->baseShader.prgId));
- checkGLcall("glDeleteObjectARB");
+ destroy_glsl_vshader(This);
}
HeapFree(GetProcessHeap(), 0, This);
}
More information about the wine-cvs
mailing list