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